rugged 0.26.3 → 0.26.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +1 -1
- data/vendor/libgit2/deps/winhttp/winhttp.h +6 -4
- data/vendor/libgit2/deps/zlib/adler32.c +14 -7
- data/vendor/libgit2/deps/zlib/crc32.c +29 -12
- data/vendor/libgit2/deps/zlib/deflate.c +499 -303
- data/vendor/libgit2/deps/zlib/deflate.h +18 -15
- data/vendor/libgit2/deps/zlib/gzguts.h +218 -0
- data/vendor/libgit2/deps/zlib/infback.c +2 -2
- data/vendor/libgit2/deps/zlib/inffast.c +34 -51
- data/vendor/libgit2/deps/zlib/inflate.c +86 -37
- data/vendor/libgit2/deps/zlib/inflate.h +7 -4
- data/vendor/libgit2/deps/zlib/inftrees.c +12 -14
- data/vendor/libgit2/deps/zlib/trees.c +38 -61
- data/vendor/libgit2/deps/zlib/zconf.h +499 -23
- data/vendor/libgit2/deps/zlib/zlib.h +298 -154
- data/vendor/libgit2/deps/zlib/zutil.c +27 -23
- data/vendor/libgit2/deps/zlib/zutil.h +35 -17
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/include/git2/sys/mempack.h +5 -4
- data/vendor/libgit2/include/git2/version.h +2 -2
- data/vendor/libgit2/src/checkout.c +34 -11
- data/vendor/libgit2/src/curl_stream.c +21 -0
- data/vendor/libgit2/src/curl_stream.h +1 -0
- data/vendor/libgit2/src/delta.c +30 -28
- data/vendor/libgit2/src/diff.c +0 -7
- data/vendor/libgit2/src/diff_file.c +3 -1
- data/vendor/libgit2/src/diff_generate.c +1 -1
- data/vendor/libgit2/src/diff_tform.c +3 -1
- data/vendor/libgit2/src/global.c +4 -2
- data/vendor/libgit2/src/hash/hash_openssl.h +18 -3
- data/vendor/libgit2/src/ignore.c +60 -36
- data/vendor/libgit2/src/index.c +59 -26
- data/vendor/libgit2/src/indexer.c +15 -2
- data/vendor/libgit2/src/merge.c +18 -8
- data/vendor/libgit2/src/odb_mempack.c +1 -0
- data/vendor/libgit2/src/oidarray.c +12 -0
- data/vendor/libgit2/src/oidarray.h +1 -0
- data/vendor/libgit2/src/openssl_stream.c +17 -4
- data/vendor/libgit2/src/pack.c +10 -7
- data/vendor/libgit2/src/path.c +180 -22
- data/vendor/libgit2/src/path.h +73 -0
- data/vendor/libgit2/src/posix.c +1 -1
- data/vendor/libgit2/src/posix.h +3 -0
- data/vendor/libgit2/src/proxy.c +6 -0
- data/vendor/libgit2/src/proxy.h +1 -0
- data/vendor/libgit2/src/push.c +3 -0
- data/vendor/libgit2/src/refdb_fs.c +2 -2
- data/vendor/libgit2/src/refs.c +7 -1
- data/vendor/libgit2/src/repository.c +9 -3
- data/vendor/libgit2/src/sha1_lookup.c +2 -2
- data/vendor/libgit2/src/signature.c +1 -0
- data/vendor/libgit2/src/socket_stream.c +1 -1
- data/vendor/libgit2/src/stransport_stream.c +3 -1
- data/vendor/libgit2/src/submodule.c +54 -7
- data/vendor/libgit2/src/submodule.h +13 -0
- data/vendor/libgit2/src/transports/smart_pkt.c +8 -2
- data/vendor/libgit2/src/transports/smart_protocol.c +6 -6
- data/vendor/libgit2/src/transports/winhttp.c +22 -0
- data/vendor/libgit2/src/tree.c +1 -1
- metadata +3 -2
@@ -1,27 +1,27 @@
|
|
1
1
|
/* zutil.c -- target dependent utility functions for the compression library
|
2
|
-
* Copyright (C) 1995-
|
2
|
+
* Copyright (C) 1995-2017 Jean-loup Gailly
|
3
3
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
4
4
|
*/
|
5
5
|
|
6
6
|
/* @(#) $Id$ */
|
7
7
|
|
8
8
|
#include "zutil.h"
|
9
|
-
|
10
|
-
#
|
11
|
-
struct internal_state {int dummy;}; /* for buggy compilers */
|
9
|
+
#ifndef Z_SOLO
|
10
|
+
# include "gzguts.h"
|
12
11
|
#endif
|
13
12
|
|
14
13
|
z_const char * const z_errmsg[10] = {
|
15
|
-
"need dictionary", /* Z_NEED_DICT 2 */
|
16
|
-
"stream end", /* Z_STREAM_END 1 */
|
17
|
-
"", /* Z_OK 0 */
|
18
|
-
"file error", /* Z_ERRNO (-1) */
|
19
|
-
"stream error", /* Z_STREAM_ERROR (-2) */
|
20
|
-
"data error", /* Z_DATA_ERROR (-3) */
|
21
|
-
"insufficient memory", /* Z_MEM_ERROR (-4) */
|
22
|
-
"buffer error", /* Z_BUF_ERROR (-5) */
|
23
|
-
"incompatible version",/* Z_VERSION_ERROR (-6) */
|
24
|
-
""
|
14
|
+
(z_const char *)"need dictionary", /* Z_NEED_DICT 2 */
|
15
|
+
(z_const char *)"stream end", /* Z_STREAM_END 1 */
|
16
|
+
(z_const char *)"", /* Z_OK 0 */
|
17
|
+
(z_const char *)"file error", /* Z_ERRNO (-1) */
|
18
|
+
(z_const char *)"stream error", /* Z_STREAM_ERROR (-2) */
|
19
|
+
(z_const char *)"data error", /* Z_DATA_ERROR (-3) */
|
20
|
+
(z_const char *)"insufficient memory", /* Z_MEM_ERROR (-4) */
|
21
|
+
(z_const char *)"buffer error", /* Z_BUF_ERROR (-5) */
|
22
|
+
(z_const char *)"incompatible version",/* Z_VERSION_ERROR (-6) */
|
23
|
+
(z_const char *)""
|
24
|
+
};
|
25
25
|
|
26
26
|
|
27
27
|
const char * ZEXPORT zlibVersion()
|
@@ -58,7 +58,7 @@ uLong ZEXPORT zlibCompileFlags()
|
|
58
58
|
case 8: flags += 2 << 6; break;
|
59
59
|
default: flags += 3 << 6;
|
60
60
|
}
|
61
|
-
#ifdef
|
61
|
+
#ifdef ZLIB_DEBUG
|
62
62
|
flags += 1 << 8;
|
63
63
|
#endif
|
64
64
|
#if defined(ASMV) || defined(ASMINF)
|
@@ -112,8 +112,8 @@ uLong ZEXPORT zlibCompileFlags()
|
|
112
112
|
return flags;
|
113
113
|
}
|
114
114
|
|
115
|
-
#ifdef
|
116
|
-
|
115
|
+
#ifdef ZLIB_DEBUG
|
116
|
+
#include <stdlib.h>
|
117
117
|
# ifndef verbose
|
118
118
|
# define verbose 0
|
119
119
|
# endif
|
@@ -216,9 +216,11 @@ local ptr_table table[MAX_PTR];
|
|
216
216
|
|
217
217
|
voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
|
218
218
|
{
|
219
|
-
voidpf buf
|
219
|
+
voidpf buf;
|
220
220
|
ulg bsize = (ulg)items*size;
|
221
221
|
|
222
|
+
(void)opaque;
|
223
|
+
|
222
224
|
/* If we allocate less than 65520 bytes, we assume that farmalloc
|
223
225
|
* will return a usable pointer which doesn't have to be normalized.
|
224
226
|
*/
|
@@ -241,6 +243,9 @@ voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size)
|
|
241
243
|
void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
|
242
244
|
{
|
243
245
|
int n;
|
246
|
+
|
247
|
+
(void)opaque;
|
248
|
+
|
244
249
|
if (*(ush*)&ptr != 0) { /* object < 64K */
|
245
250
|
farfree(ptr);
|
246
251
|
return;
|
@@ -256,7 +261,6 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
|
|
256
261
|
next_ptr--;
|
257
262
|
return;
|
258
263
|
}
|
259
|
-
ptr = opaque; /* just to make some compilers happy */
|
260
264
|
Assert(0, "zcfree: ptr not found");
|
261
265
|
}
|
262
266
|
|
@@ -275,13 +279,13 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
|
|
275
279
|
|
276
280
|
voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size)
|
277
281
|
{
|
278
|
-
|
282
|
+
(void)opaque;
|
279
283
|
return _halloc((long)items, size);
|
280
284
|
}
|
281
285
|
|
282
286
|
void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr)
|
283
287
|
{
|
284
|
-
|
288
|
+
(void)opaque;
|
285
289
|
_hfree(ptr);
|
286
290
|
}
|
287
291
|
|
@@ -303,7 +307,7 @@ voidpf ZLIB_INTERNAL zcalloc (opaque, items, size)
|
|
303
307
|
unsigned items;
|
304
308
|
unsigned size;
|
305
309
|
{
|
306
|
-
|
310
|
+
(void)opaque;
|
307
311
|
return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
|
308
312
|
(voidpf)calloc(items, size);
|
309
313
|
}
|
@@ -312,8 +316,8 @@ void ZLIB_INTERNAL zcfree (opaque, ptr)
|
|
312
316
|
voidpf opaque;
|
313
317
|
voidpf ptr;
|
314
318
|
{
|
319
|
+
(void)opaque;
|
315
320
|
free(ptr);
|
316
|
-
if (opaque) return; /* make compiler happy */
|
317
321
|
}
|
318
322
|
|
319
323
|
#endif /* MY_ZCALLOC */
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/* zutil.h -- internal interface and configuration of the compression library
|
2
|
-
* Copyright (C) 1995-
|
2
|
+
* Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
|
3
3
|
* For conditions of distribution and use, see copyright notice in zlib.h
|
4
4
|
*/
|
5
5
|
|
@@ -36,7 +36,9 @@
|
|
36
36
|
#ifndef local
|
37
37
|
# define local static
|
38
38
|
#endif
|
39
|
-
/*
|
39
|
+
/* since "static" is used to mean two completely different things in C, we
|
40
|
+
define "local" for the non-static meaning of "static", for readability
|
41
|
+
(compile with -Dlocal if your debugger can't find static symbols) */
|
40
42
|
|
41
43
|
typedef unsigned char uch;
|
42
44
|
typedef uch FAR uchf;
|
@@ -98,28 +100,38 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
|
98
100
|
#endif
|
99
101
|
|
100
102
|
#ifdef AMIGA
|
101
|
-
# define OS_CODE
|
103
|
+
# define OS_CODE 1
|
102
104
|
#endif
|
103
105
|
|
104
106
|
#if defined(VAXC) || defined(VMS)
|
105
|
-
# define OS_CODE
|
107
|
+
# define OS_CODE 2
|
106
108
|
# define F_OPEN(name, mode) \
|
107
109
|
fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
|
108
110
|
#endif
|
109
111
|
|
112
|
+
#ifdef __370__
|
113
|
+
# if __TARGET_LIB__ < 0x20000000
|
114
|
+
# define OS_CODE 4
|
115
|
+
# elif __TARGET_LIB__ < 0x40000000
|
116
|
+
# define OS_CODE 11
|
117
|
+
# else
|
118
|
+
# define OS_CODE 8
|
119
|
+
# endif
|
120
|
+
#endif
|
121
|
+
|
110
122
|
#if defined(ATARI) || defined(atarist)
|
111
|
-
# define OS_CODE
|
123
|
+
# define OS_CODE 5
|
112
124
|
#endif
|
113
125
|
|
114
126
|
#ifdef OS2
|
115
|
-
# define OS_CODE
|
127
|
+
# define OS_CODE 6
|
116
128
|
# if defined(M_I86) && !defined(Z_SOLO)
|
117
129
|
# include <malloc.h>
|
118
130
|
# endif
|
119
131
|
#endif
|
120
132
|
|
121
133
|
#if defined(MACOS) || defined(TARGET_OS_MAC)
|
122
|
-
# define OS_CODE
|
134
|
+
# define OS_CODE 7
|
123
135
|
# ifndef Z_SOLO
|
124
136
|
# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
|
125
137
|
# include <unix.h> /* for fdopen */
|
@@ -131,18 +143,24 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
|
131
143
|
# endif
|
132
144
|
#endif
|
133
145
|
|
134
|
-
#ifdef
|
135
|
-
# define OS_CODE
|
146
|
+
#ifdef __acorn
|
147
|
+
# define OS_CODE 13
|
136
148
|
#endif
|
137
149
|
|
138
|
-
#
|
139
|
-
#
|
140
|
-
#
|
141
|
-
|
150
|
+
#if defined(WIN32) && !defined(__CYGWIN__)
|
151
|
+
# define OS_CODE 10
|
152
|
+
#endif
|
153
|
+
|
154
|
+
#ifdef _BEOS_
|
155
|
+
# define OS_CODE 16
|
156
|
+
#endif
|
157
|
+
|
158
|
+
#ifdef __TOS_OS400__
|
159
|
+
# define OS_CODE 18
|
142
160
|
#endif
|
143
161
|
|
144
|
-
#ifdef
|
145
|
-
# define OS_CODE
|
162
|
+
#ifdef __APPLE__
|
163
|
+
# define OS_CODE 19
|
146
164
|
#endif
|
147
165
|
|
148
166
|
#if defined(_BEOS_) || defined(RISCOS)
|
@@ -177,7 +195,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
|
177
195
|
/* common defaults */
|
178
196
|
|
179
197
|
#ifndef OS_CODE
|
180
|
-
# define OS_CODE
|
198
|
+
# define OS_CODE 3 /* assume Unix */
|
181
199
|
#endif
|
182
200
|
|
183
201
|
#ifndef F_OPEN
|
@@ -216,7 +234,7 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
|
|
216
234
|
#endif
|
217
235
|
|
218
236
|
/* Diagnostic functions */
|
219
|
-
#ifdef
|
237
|
+
#ifdef ZLIB_DEBUG
|
220
238
|
# include <stdio.h>
|
221
239
|
extern int ZLIB_INTERNAL z_verbose;
|
222
240
|
extern void ZLIB_INTERNAL z_error OF((char *m));
|
@@ -11,6 +11,7 @@
|
|
11
11
|
#include "git2/types.h"
|
12
12
|
#include "git2/oid.h"
|
13
13
|
#include "git2/odb.h"
|
14
|
+
#include "git2/buffer.h"
|
14
15
|
|
15
16
|
/**
|
16
17
|
* @file git2/sys/mempack.h
|
@@ -38,10 +39,10 @@ GIT_BEGIN_DECL
|
|
38
39
|
* Subsequent reads will also be served from the in-memory store
|
39
40
|
* to ensure consistency, until the memory store is dumped.
|
40
41
|
*
|
41
|
-
* @param out
|
42
|
+
* @param out Pointer where to store the ODB backend
|
42
43
|
* @return 0 on success; error code otherwise
|
43
44
|
*/
|
44
|
-
int git_mempack_new(git_odb_backend **out);
|
45
|
+
GIT_EXTERN(int) git_mempack_new(git_odb_backend **out);
|
45
46
|
|
46
47
|
/**
|
47
48
|
* Dump all the queued in-memory writes to a packfile.
|
@@ -64,7 +65,7 @@ int git_mempack_new(git_odb_backend **out);
|
|
64
65
|
* @param backend The mempack backend
|
65
66
|
* @return 0 on success; error code otherwise
|
66
67
|
*/
|
67
|
-
int git_mempack_dump(git_buf *pack, git_repository *repo, git_odb_backend *backend);
|
68
|
+
GIT_EXTERN(int) git_mempack_dump(git_buf *pack, git_repository *repo, git_odb_backend *backend);
|
68
69
|
|
69
70
|
/**
|
70
71
|
* Reset the memory packer by clearing all the queued objects.
|
@@ -78,7 +79,7 @@ int git_mempack_dump(git_buf *pack, git_repository *repo, git_odb_backend *backe
|
|
78
79
|
*
|
79
80
|
* @param backend The mempack backend
|
80
81
|
*/
|
81
|
-
void git_mempack_reset(git_odb_backend *backend);
|
82
|
+
GIT_EXTERN(void) git_mempack_reset(git_odb_backend *backend);
|
82
83
|
|
83
84
|
GIT_END_DECL
|
84
85
|
|
@@ -7,10 +7,10 @@
|
|
7
7
|
#ifndef INCLUDE_git_version_h__
|
8
8
|
#define INCLUDE_git_version_h__
|
9
9
|
|
10
|
-
#define LIBGIT2_VERSION "0.26.
|
10
|
+
#define LIBGIT2_VERSION "0.26.6"
|
11
11
|
#define LIBGIT2_VER_MAJOR 0
|
12
12
|
#define LIBGIT2_VER_MINOR 26
|
13
|
-
#define LIBGIT2_VER_REVISION
|
13
|
+
#define LIBGIT2_VER_REVISION 6
|
14
14
|
#define LIBGIT2_VER_PATCH 0
|
15
15
|
|
16
16
|
#define LIBGIT2_SOVERSION 26
|
@@ -159,6 +159,19 @@ GIT_INLINE(bool) is_workdir_base_or_new(
|
|
159
159
|
git_oid__cmp(&newitem->id, workdir_id) == 0);
|
160
160
|
}
|
161
161
|
|
162
|
+
GIT_INLINE(bool) is_file_mode_changed(git_filemode_t a, git_filemode_t b)
|
163
|
+
{
|
164
|
+
#ifdef GIT_WIN32
|
165
|
+
/*
|
166
|
+
* On Win32 we do not support the executable bit; the file will
|
167
|
+
* always be 0100644 on disk, don't bother doing a test.
|
168
|
+
*/
|
169
|
+
return false;
|
170
|
+
#else
|
171
|
+
return (S_ISREG(a) && S_ISREG(b) && a != b);
|
172
|
+
#endif
|
173
|
+
}
|
174
|
+
|
162
175
|
static bool checkout_is_workdir_modified(
|
163
176
|
checkout_data *data,
|
164
177
|
const git_diff_file *baseitem,
|
@@ -192,16 +205,23 @@ static bool checkout_is_workdir_modified(
|
|
192
205
|
return rval;
|
193
206
|
}
|
194
207
|
|
195
|
-
/*
|
196
|
-
*
|
197
|
-
*
|
198
|
-
*
|
199
|
-
*
|
208
|
+
/*
|
209
|
+
* Look at the cache to decide if the workdir is modified: if the
|
210
|
+
* cache contents match the workdir contents, then we do not need
|
211
|
+
* to examine the working directory directly, instead we can
|
212
|
+
* examine the cache to see if _it_ has been modified. This allows
|
213
|
+
* us to avoid touching the disk.
|
200
214
|
*/
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
215
|
+
ie = git_index_get_bypath(data->index, wditem->path, 0);
|
216
|
+
|
217
|
+
if (ie != NULL &&
|
218
|
+
git_index_time_eq(&wditem->mtime, &ie->mtime) &&
|
219
|
+
wditem->file_size == ie->file_size &&
|
220
|
+
!is_file_mode_changed(wditem->mode, ie->mode)) {
|
221
|
+
|
222
|
+
/* The workdir is modified iff the index entry is modified */
|
223
|
+
return !is_workdir_base_or_new(&ie->id, baseitem, newitem) ||
|
224
|
+
is_file_mode_changed(baseitem->mode, ie->mode);
|
205
225
|
}
|
206
226
|
|
207
227
|
/* depending on where base is coming from, we may or may not know
|
@@ -214,6 +234,9 @@ static bool checkout_is_workdir_modified(
|
|
214
234
|
if (S_ISDIR(wditem->mode))
|
215
235
|
return false;
|
216
236
|
|
237
|
+
if (is_file_mode_changed(baseitem->mode, wditem->mode))
|
238
|
+
return true;
|
239
|
+
|
217
240
|
if (git_diff__oid_for_entry(&oid, data->diff, wditem, wditem->mode, NULL) < 0)
|
218
241
|
return false;
|
219
242
|
|
@@ -1249,14 +1272,14 @@ static int checkout_verify_paths(
|
|
1249
1272
|
unsigned int flags = GIT_PATH_REJECT_WORKDIR_DEFAULTS;
|
1250
1273
|
|
1251
1274
|
if (action & CHECKOUT_ACTION__REMOVE) {
|
1252
|
-
if (!git_path_isvalid(repo, delta->old_file.path, flags)) {
|
1275
|
+
if (!git_path_isvalid(repo, delta->old_file.path, delta->old_file.mode, flags)) {
|
1253
1276
|
giterr_set(GITERR_CHECKOUT, "cannot remove invalid path '%s'", delta->old_file.path);
|
1254
1277
|
return -1;
|
1255
1278
|
}
|
1256
1279
|
}
|
1257
1280
|
|
1258
1281
|
if (action & ~CHECKOUT_ACTION__REMOVE) {
|
1259
|
-
if (!git_path_isvalid(repo, delta->new_file.path, flags)) {
|
1282
|
+
if (!git_path_isvalid(repo, delta->new_file.path, delta->new_file.mode, flags)) {
|
1260
1283
|
giterr_set(GITERR_CHECKOUT, "cannot checkout to invalid path '%s'", delta->new_file.path);
|
1261
1284
|
return -1;
|
1262
1285
|
}
|
@@ -12,6 +12,7 @@
|
|
12
12
|
#include "stream.h"
|
13
13
|
#include "git2/transport.h"
|
14
14
|
#include "buffer.h"
|
15
|
+
#include "global.h"
|
15
16
|
#include "vector.h"
|
16
17
|
#include "proxy.h"
|
17
18
|
|
@@ -36,6 +37,18 @@ typedef struct {
|
|
36
37
|
git_cred *proxy_cred;
|
37
38
|
} curl_stream;
|
38
39
|
|
40
|
+
int git_curl_stream_global_init(void)
|
41
|
+
{
|
42
|
+
if (curl_global_init(CURL_GLOBAL_ALL) != 0) {
|
43
|
+
giterr_set(GITERR_NET, "could not initialize curl");
|
44
|
+
return -1;
|
45
|
+
}
|
46
|
+
|
47
|
+
/* `curl_global_cleanup` is provided by libcurl */
|
48
|
+
git__on_shutdown(curl_global_cleanup);
|
49
|
+
return 0;
|
50
|
+
}
|
51
|
+
|
39
52
|
static int seterr_curl(curl_stream *s)
|
40
53
|
{
|
41
54
|
giterr_set(GITERR_NET, "curl error: %s\n", s->curl_error);
|
@@ -193,6 +206,7 @@ static int curls_set_proxy(git_stream *stream, const git_proxy_options *proxy_op
|
|
193
206
|
CURLcode res;
|
194
207
|
curl_stream *s = (curl_stream *) stream;
|
195
208
|
|
209
|
+
git_proxy_options_clear(&s->proxy);
|
196
210
|
if ((error = git_proxy_options_dup(&s->proxy, proxy_opts)) < 0)
|
197
211
|
return error;
|
198
212
|
|
@@ -293,6 +307,8 @@ static void curls_free(git_stream *stream)
|
|
293
307
|
|
294
308
|
curls_close(stream);
|
295
309
|
git_strarray_free(&s->cert_info_strings);
|
310
|
+
git_proxy_options_clear(&s->proxy);
|
311
|
+
git_cred_free(s->proxy_cred);
|
296
312
|
git__free(s);
|
297
313
|
}
|
298
314
|
|
@@ -348,6 +364,11 @@ int git_curl_stream_new(git_stream **out, const char *host, const char *port)
|
|
348
364
|
|
349
365
|
#include "stream.h"
|
350
366
|
|
367
|
+
int git_curl_stream_global_init(void)
|
368
|
+
{
|
369
|
+
return 0;
|
370
|
+
}
|
371
|
+
|
351
372
|
int git_curl_stream_new(git_stream **out, const char *host, const char *port)
|
352
373
|
{
|
353
374
|
GIT_UNUSED(out);
|
data/vendor/libgit2/src/delta.c
CHANGED
@@ -539,10 +539,11 @@ int git_delta_apply(
|
|
539
539
|
*out = NULL;
|
540
540
|
*out_len = 0;
|
541
541
|
|
542
|
-
/*
|
543
|
-
|
544
|
-
|
545
|
-
|
542
|
+
/*
|
543
|
+
* Check that the base size matches the data we were given;
|
544
|
+
* if not we would underflow while accessing data from the
|
545
|
+
* base object, resulting in data corruption or segfault.
|
546
|
+
*/
|
546
547
|
if ((hdr_sz(&base_sz, &delta, delta_end) < 0) || (base_sz != base_len)) {
|
547
548
|
giterr_set(GITERR_INVALID, "failed to apply delta: base size does not match given data");
|
548
549
|
return -1;
|
@@ -564,31 +565,34 @@ int git_delta_apply(
|
|
564
565
|
while (delta < delta_end) {
|
565
566
|
unsigned char cmd = *delta++;
|
566
567
|
if (cmd & 0x80) {
|
567
|
-
/* cmd is a copy instruction; copy from the base.
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
if (cmd & 0x01) off
|
572
|
-
if (cmd & 0x02) off
|
573
|
-
if (cmd & 0x04) off
|
574
|
-
if (cmd & 0x08) off
|
575
|
-
|
576
|
-
if (cmd & 0x10) len
|
577
|
-
if (cmd & 0x20) len
|
578
|
-
if (cmd & 0x40) len
|
579
|
-
if (!len)
|
580
|
-
|
581
|
-
|
568
|
+
/* cmd is a copy instruction; copy from the base. */
|
569
|
+
size_t off = 0, len = 0, end;
|
570
|
+
|
571
|
+
#define ADD_DELTA(o, shift) { if (delta < delta_end) (o) |= ((unsigned) *delta++ << shift); else goto fail; }
|
572
|
+
if (cmd & 0x01) ADD_DELTA(off, 0UL);
|
573
|
+
if (cmd & 0x02) ADD_DELTA(off, 8UL);
|
574
|
+
if (cmd & 0x04) ADD_DELTA(off, 16UL);
|
575
|
+
if (cmd & 0x08) ADD_DELTA(off, 24UL);
|
576
|
+
|
577
|
+
if (cmd & 0x10) ADD_DELTA(len, 0UL);
|
578
|
+
if (cmd & 0x20) ADD_DELTA(len, 8UL);
|
579
|
+
if (cmd & 0x40) ADD_DELTA(len, 16UL);
|
580
|
+
if (!len) len = 0x10000;
|
581
|
+
#undef ADD_DELTA
|
582
|
+
|
583
|
+
if (GIT_ADD_SIZET_OVERFLOW(&end, off, len) ||
|
584
|
+
base_len < end || res_sz < len)
|
582
585
|
goto fail;
|
586
|
+
|
583
587
|
memcpy(res_dp, base + off, len);
|
584
588
|
res_dp += len;
|
585
589
|
res_sz -= len;
|
586
590
|
|
587
|
-
}
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
591
|
+
} else if (cmd) {
|
592
|
+
/*
|
593
|
+
* cmd is a literal insert instruction; copy from
|
594
|
+
* the delta stream itself.
|
595
|
+
*/
|
592
596
|
if (delta_end - delta < cmd || res_sz < cmd)
|
593
597
|
goto fail;
|
594
598
|
memcpy(res_dp, delta, cmd);
|
@@ -596,10 +600,8 @@ int git_delta_apply(
|
|
596
600
|
res_dp += cmd;
|
597
601
|
res_sz -= cmd;
|
598
602
|
|
599
|
-
}
|
600
|
-
|
601
|
-
/* cmd == 0 is reserved for future encodings.
|
602
|
-
*/
|
603
|
+
} else {
|
604
|
+
/* cmd == 0 is reserved for future encodings. */
|
603
605
|
goto fail;
|
604
606
|
}
|
605
607
|
}
|