rugged 0.27.7 → 0.27.10
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/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +99 -51
- data/vendor/libgit2/COPYING +28 -0
- data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
- data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
- data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
- data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
- data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
- data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
- data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
- data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
- data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
- data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
- data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
- data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
- data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
- data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
- data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
- data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
- data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
- data/vendor/libgit2/deps/pcre/COPYING +5 -0
- data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
- data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
- data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
- data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
- data/vendor/libgit2/deps/pcre/config.h.in +57 -0
- data/vendor/libgit2/deps/pcre/pcre.h +641 -0
- data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
- data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
- data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
- data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
- data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
- data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
- data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
- data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
- data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
- data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
- data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
- data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
- data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
- data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
- data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
- data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
- data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
- data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
- data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
- data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
- data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
- data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
- data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
- data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
- data/vendor/libgit2/deps/pcre/ucp.h +224 -0
- data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
- data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
- data/vendor/libgit2/deps/zlib/COPYING +27 -0
- data/vendor/libgit2/deps/zlib/adler32.c +0 -7
- data/vendor/libgit2/deps/zlib/crc32.c +0 -7
- data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
- data/vendor/libgit2/include/git2/apply.h +149 -0
- data/vendor/libgit2/include/git2/attr.h +20 -13
- data/vendor/libgit2/include/git2/blame.h +4 -4
- data/vendor/libgit2/include/git2/blob.h +44 -12
- data/vendor/libgit2/include/git2/buffer.h +20 -26
- data/vendor/libgit2/include/git2/cert.h +135 -0
- data/vendor/libgit2/include/git2/checkout.h +53 -21
- data/vendor/libgit2/include/git2/cherrypick.h +3 -3
- data/vendor/libgit2/include/git2/clone.h +5 -5
- data/vendor/libgit2/include/git2/commit.h +25 -3
- data/vendor/libgit2/include/git2/common.h +35 -10
- data/vendor/libgit2/include/git2/config.h +29 -19
- data/vendor/libgit2/include/git2/cred.h +308 -0
- data/vendor/libgit2/include/git2/deprecated.h +493 -0
- data/vendor/libgit2/include/git2/describe.h +4 -4
- data/vendor/libgit2/include/git2/diff.h +177 -135
- data/vendor/libgit2/include/git2/errors.h +53 -46
- data/vendor/libgit2/include/git2/filter.h +8 -0
- data/vendor/libgit2/include/git2/index.h +74 -52
- data/vendor/libgit2/include/git2/indexer.h +76 -6
- data/vendor/libgit2/include/git2/merge.h +25 -10
- data/vendor/libgit2/include/git2/net.h +0 -5
- data/vendor/libgit2/include/git2/notes.h +1 -1
- data/vendor/libgit2/include/git2/object.h +17 -29
- data/vendor/libgit2/include/git2/odb.h +12 -11
- data/vendor/libgit2/include/git2/odb_backend.h +10 -9
- data/vendor/libgit2/include/git2/oid.h +2 -2
- data/vendor/libgit2/include/git2/pack.h +14 -3
- data/vendor/libgit2/include/git2/proxy.h +5 -3
- data/vendor/libgit2/include/git2/rebase.h +46 -2
- data/vendor/libgit2/include/git2/refs.h +34 -16
- data/vendor/libgit2/include/git2/remote.h +111 -14
- data/vendor/libgit2/include/git2/repository.h +69 -34
- data/vendor/libgit2/include/git2/revert.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +7 -7
- data/vendor/libgit2/include/git2/signature.h +2 -2
- data/vendor/libgit2/include/git2/stash.h +5 -5
- data/vendor/libgit2/include/git2/status.h +26 -17
- data/vendor/libgit2/include/git2/submodule.h +23 -6
- data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
- data/vendor/libgit2/include/git2/sys/commit.h +1 -1
- data/vendor/libgit2/include/git2/sys/config.h +13 -13
- data/vendor/libgit2/include/git2/sys/cred.h +90 -0
- data/vendor/libgit2/include/git2/sys/filter.h +6 -6
- data/vendor/libgit2/include/git2/sys/merge.h +3 -3
- data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
- data/vendor/libgit2/include/git2/sys/path.h +14 -5
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
- data/vendor/libgit2/include/git2/sys/repository.h +5 -1
- data/vendor/libgit2/include/git2/sys/stream.h +92 -12
- data/vendor/libgit2/include/git2/sys/transport.h +129 -83
- data/vendor/libgit2/include/git2/tag.h +13 -4
- data/vendor/libgit2/include/git2/trace.h +2 -2
- data/vendor/libgit2/include/git2/transport.h +11 -311
- data/vendor/libgit2/include/git2/tree.h +4 -4
- data/vendor/libgit2/include/git2/types.h +25 -106
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +5 -5
- data/vendor/libgit2/include/git2.h +4 -0
- data/vendor/libgit2/src/CMakeLists.txt +104 -235
- data/vendor/libgit2/src/alloc.c +14 -18
- data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
- data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
- data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
- data/vendor/libgit2/src/annotated_commit.c +18 -11
- data/vendor/libgit2/src/apply.c +535 -28
- data/vendor/libgit2/src/apply.h +3 -1
- data/vendor/libgit2/src/array.h +2 -2
- data/vendor/libgit2/src/attr.c +77 -71
- data/vendor/libgit2/src/attr_file.c +203 -117
- data/vendor/libgit2/src/attr_file.h +9 -9
- data/vendor/libgit2/src/attrcache.c +49 -51
- data/vendor/libgit2/src/attrcache.h +2 -1
- data/vendor/libgit2/src/blame.c +38 -18
- data/vendor/libgit2/src/blame.h +1 -1
- data/vendor/libgit2/src/blame_git.c +29 -15
- data/vendor/libgit2/src/blob.c +123 -37
- data/vendor/libgit2/src/blob.h +19 -2
- data/vendor/libgit2/src/branch.c +47 -23
- data/vendor/libgit2/src/buf_text.c +7 -6
- data/vendor/libgit2/src/buffer.c +60 -53
- data/vendor/libgit2/src/cache.c +38 -45
- data/vendor/libgit2/src/cache.h +3 -3
- data/vendor/libgit2/src/cc-compat.h +20 -3
- data/vendor/libgit2/src/checkout.c +77 -67
- data/vendor/libgit2/src/cherrypick.c +12 -6
- data/vendor/libgit2/src/clone.c +36 -14
- data/vendor/libgit2/src/clone.h +4 -0
- data/vendor/libgit2/src/commit.c +103 -48
- data/vendor/libgit2/src/commit.h +7 -0
- data/vendor/libgit2/src/commit_list.c +36 -78
- data/vendor/libgit2/src/commit_list.h +2 -2
- data/vendor/libgit2/src/common.h +24 -90
- data/vendor/libgit2/src/config.c +203 -176
- data/vendor/libgit2/src/config.h +8 -20
- data/vendor/libgit2/src/config_backend.h +96 -0
- data/vendor/libgit2/src/config_cache.c +41 -35
- data/vendor/libgit2/src/config_entries.c +229 -0
- data/vendor/libgit2/src/config_entries.h +24 -0
- data/vendor/libgit2/src/config_file.c +422 -680
- data/vendor/libgit2/src/config_mem.c +220 -0
- data/vendor/libgit2/src/config_parse.c +96 -68
- data/vendor/libgit2/src/config_parse.h +15 -14
- data/vendor/libgit2/src/config_snapshot.c +206 -0
- data/vendor/libgit2/src/crlf.c +219 -196
- data/vendor/libgit2/src/delta.c +25 -18
- data/vendor/libgit2/src/describe.c +42 -41
- data/vendor/libgit2/src/diff.c +52 -67
- data/vendor/libgit2/src/diff.h +2 -1
- data/vendor/libgit2/src/diff_driver.c +44 -46
- data/vendor/libgit2/src/diff_file.c +16 -14
- data/vendor/libgit2/src/diff_file.h +1 -1
- data/vendor/libgit2/src/diff_generate.c +158 -103
- data/vendor/libgit2/src/diff_generate.h +3 -3
- data/vendor/libgit2/src/diff_parse.c +4 -4
- data/vendor/libgit2/src/diff_print.c +34 -22
- data/vendor/libgit2/src/diff_stats.c +22 -7
- data/vendor/libgit2/src/diff_tform.c +18 -16
- data/vendor/libgit2/src/diff_xdiff.c +3 -3
- data/vendor/libgit2/src/errors.c +51 -39
- data/vendor/libgit2/src/errors.h +81 -0
- data/vendor/libgit2/src/features.h.in +9 -3
- data/vendor/libgit2/src/fetch.c +8 -3
- data/vendor/libgit2/src/fetchhead.c +12 -12
- data/vendor/libgit2/src/filebuf.c +28 -32
- data/vendor/libgit2/src/filebuf.h +2 -2
- data/vendor/libgit2/src/filter.c +47 -33
- data/vendor/libgit2/src/filter.h +0 -10
- data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
- data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
- data/vendor/libgit2/src/global.c +35 -55
- data/vendor/libgit2/src/global.h +0 -2
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
- data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
- data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
- data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
- data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
- data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
- data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
- data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
- data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
- data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
- data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
- data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
- data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
- data/vendor/libgit2/src/hash/sha1.h +38 -0
- data/vendor/libgit2/src/hash.c +61 -0
- data/vendor/libgit2/src/hash.h +20 -21
- data/vendor/libgit2/src/hashsig.c +5 -5
- data/vendor/libgit2/src/idxmap.c +107 -61
- data/vendor/libgit2/src/idxmap.h +153 -31
- data/vendor/libgit2/src/ignore.c +38 -42
- data/vendor/libgit2/src/index.c +264 -199
- data/vendor/libgit2/src/index.h +7 -1
- data/vendor/libgit2/src/indexer.c +338 -167
- data/vendor/libgit2/src/integer.h +71 -26
- data/vendor/libgit2/src/iterator.c +134 -62
- data/vendor/libgit2/src/iterator.h +15 -0
- data/vendor/libgit2/src/mailmap.c +8 -8
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +137 -93
- data/vendor/libgit2/src/merge_driver.c +11 -11
- data/vendor/libgit2/src/merge_file.c +2 -2
- data/vendor/libgit2/src/mwindow.c +24 -29
- data/vendor/libgit2/src/mwindow.h +4 -4
- data/vendor/libgit2/src/net.c +184 -0
- data/vendor/libgit2/src/net.h +36 -0
- data/vendor/libgit2/src/netops.c +55 -156
- data/vendor/libgit2/src/netops.h +3 -23
- data/vendor/libgit2/src/notes.c +14 -9
- data/vendor/libgit2/src/object.c +120 -69
- data/vendor/libgit2/src/object.h +22 -9
- data/vendor/libgit2/src/object_api.c +8 -8
- data/vendor/libgit2/src/odb.c +111 -88
- data/vendor/libgit2/src/odb.h +8 -7
- data/vendor/libgit2/src/odb_loose.c +58 -47
- data/vendor/libgit2/src/odb_mempack.c +21 -34
- data/vendor/libgit2/src/odb_pack.c +17 -13
- data/vendor/libgit2/src/offmap.c +53 -35
- data/vendor/libgit2/src/offmap.h +108 -21
- data/vendor/libgit2/src/oid.c +12 -7
- data/vendor/libgit2/src/oidmap.c +49 -47
- data/vendor/libgit2/src/oidmap.h +101 -24
- data/vendor/libgit2/src/pack-objects.c +87 -86
- data/vendor/libgit2/src/pack-objects.h +2 -8
- data/vendor/libgit2/src/pack.c +94 -96
- data/vendor/libgit2/src/pack.h +16 -18
- data/vendor/libgit2/src/parse.c +17 -4
- data/vendor/libgit2/src/parse.h +3 -3
- data/vendor/libgit2/src/patch.c +3 -3
- data/vendor/libgit2/src/patch_generate.c +18 -18
- data/vendor/libgit2/src/patch_parse.c +147 -79
- data/vendor/libgit2/src/path.c +207 -62
- data/vendor/libgit2/src/path.h +14 -0
- data/vendor/libgit2/src/pathspec.c +18 -18
- data/vendor/libgit2/src/pool.c +26 -22
- data/vendor/libgit2/src/pool.h +7 -7
- data/vendor/libgit2/src/posix.c +10 -10
- data/vendor/libgit2/src/posix.h +12 -1
- data/vendor/libgit2/src/proxy.c +8 -3
- data/vendor/libgit2/src/push.c +35 -29
- data/vendor/libgit2/src/push.h +2 -1
- data/vendor/libgit2/src/reader.c +265 -0
- data/vendor/libgit2/src/reader.h +107 -0
- data/vendor/libgit2/src/rebase.c +97 -38
- data/vendor/libgit2/src/refdb.c +15 -3
- data/vendor/libgit2/src/refdb_fs.c +318 -222
- data/vendor/libgit2/src/reflog.c +13 -15
- data/vendor/libgit2/src/refs.c +122 -89
- data/vendor/libgit2/src/refs.h +5 -3
- data/vendor/libgit2/src/refspec.c +27 -33
- data/vendor/libgit2/src/regexp.c +221 -0
- data/vendor/libgit2/src/regexp.h +97 -0
- data/vendor/libgit2/src/remote.c +229 -178
- data/vendor/libgit2/src/remote.h +11 -2
- data/vendor/libgit2/src/repository.c +227 -172
- data/vendor/libgit2/src/repository.h +52 -40
- data/vendor/libgit2/src/reset.c +7 -7
- data/vendor/libgit2/src/revert.c +11 -6
- data/vendor/libgit2/src/revparse.c +46 -46
- data/vendor/libgit2/src/revwalk.c +89 -54
- data/vendor/libgit2/src/revwalk.h +20 -0
- data/vendor/libgit2/src/settings.c +22 -9
- data/vendor/libgit2/src/signature.c +15 -13
- data/vendor/libgit2/src/sortedcache.c +22 -36
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +56 -76
- data/vendor/libgit2/src/status.c +27 -21
- data/vendor/libgit2/src/stream.h +17 -2
- data/vendor/libgit2/src/streams/mbedtls.c +100 -80
- data/vendor/libgit2/src/streams/mbedtls.h +5 -2
- data/vendor/libgit2/src/streams/openssl.c +93 -81
- data/vendor/libgit2/src/streams/openssl.h +5 -2
- data/vendor/libgit2/src/streams/registry.c +118 -0
- data/vendor/libgit2/src/streams/registry.h +19 -0
- data/vendor/libgit2/src/streams/socket.c +55 -30
- data/vendor/libgit2/src/streams/stransport.c +57 -32
- data/vendor/libgit2/src/streams/stransport.h +5 -0
- data/vendor/libgit2/src/streams/tls.c +48 -20
- data/vendor/libgit2/src/streams/tls.h +12 -4
- data/vendor/libgit2/src/strmap.c +47 -74
- data/vendor/libgit2/src/strmap.h +108 -33
- data/vendor/libgit2/src/submodule.c +190 -169
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +25 -15
- data/vendor/libgit2/src/tag.c +39 -26
- data/vendor/libgit2/src/tag.h +2 -1
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +2 -2
- data/vendor/libgit2/src/trailer.c +46 -32
- data/vendor/libgit2/src/transaction.c +30 -29
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +14 -10
- data/vendor/libgit2/src/transports/auth.h +10 -3
- data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
- data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
- data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
- data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
- data/vendor/libgit2/src/transports/cred.c +24 -24
- data/vendor/libgit2/src/transports/git.c +25 -30
- data/vendor/libgit2/src/transports/http.c +871 -335
- data/vendor/libgit2/src/transports/http.h +2 -0
- data/vendor/libgit2/src/transports/local.c +28 -28
- data/vendor/libgit2/src/transports/smart.c +64 -46
- data/vendor/libgit2/src/transports/smart.h +5 -6
- data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
- data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
- data/vendor/libgit2/src/transports/ssh.c +76 -65
- data/vendor/libgit2/src/transports/winhttp.c +328 -319
- data/vendor/libgit2/src/tree-cache.c +21 -14
- data/vendor/libgit2/src/tree.c +119 -112
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/unix/map.c +3 -3
- data/vendor/libgit2/src/unix/posix.h +1 -11
- data/vendor/libgit2/src/userdiff.h +3 -1
- data/vendor/libgit2/src/util.c +154 -93
- data/vendor/libgit2/src/util.h +19 -23
- data/vendor/libgit2/src/vector.c +15 -10
- data/vendor/libgit2/src/wildmatch.c +320 -0
- data/vendor/libgit2/src/wildmatch.h +23 -0
- data/vendor/libgit2/src/win32/dir.c +3 -3
- data/vendor/libgit2/src/win32/findfile.c +1 -1
- data/vendor/libgit2/src/win32/map.c +9 -11
- data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
- data/vendor/libgit2/src/win32/path_w32.c +113 -9
- data/vendor/libgit2/src/win32/path_w32.h +18 -29
- data/vendor/libgit2/src/win32/posix.h +1 -4
- data/vendor/libgit2/src/win32/posix_w32.c +69 -44
- data/vendor/libgit2/src/win32/precompiled.h +0 -2
- data/vendor/libgit2/src/win32/thread.c +5 -10
- data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
- data/vendor/libgit2/src/win32/w32_common.h +39 -0
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
- data/vendor/libgit2/src/win32/w32_stack.c +6 -11
- data/vendor/libgit2/src/win32/w32_stack.h +3 -3
- data/vendor/libgit2/src/win32/w32_util.c +27 -64
- data/vendor/libgit2/src/win32/w32_util.h +5 -49
- data/vendor/libgit2/src/worktree.c +44 -30
- data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
- data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
- data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
- data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
- data/vendor/libgit2/src/zstream.c +4 -4
- metadata +115 -38
- data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
- data/vendor/libgit2/deps/regex/config.h +0 -7
- data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
- data/vendor/libgit2/deps/regex/regex.c +0 -92
- data/vendor/libgit2/deps/regex/regex.h +0 -582
- data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
- data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
- data/vendor/libgit2/deps/regex/regexec.c +0 -4369
- data/vendor/libgit2/include/git2/inttypes.h +0 -309
- data/vendor/libgit2/include/git2/sys/time.h +0 -31
- data/vendor/libgit2/libgit2.pc.in +0 -13
- data/vendor/libgit2/src/config_file.h +0 -73
- data/vendor/libgit2/src/fnmatch.c +0 -248
- data/vendor/libgit2/src/fnmatch.h +0 -48
- data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
- data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
- data/vendor/libgit2/src/streams/curl.c +0 -385
- data/vendor/libgit2/src/streams/curl.h +0 -17
- /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
|
@@ -31,7 +31,7 @@ static int flush_pkt(git_pkt **out)
|
|
|
31
31
|
git_pkt *pkt;
|
|
32
32
|
|
|
33
33
|
pkt = git__malloc(sizeof(git_pkt));
|
|
34
|
-
|
|
34
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
35
35
|
|
|
36
36
|
pkt->type = GIT_PKT_FLUSH;
|
|
37
37
|
*out = pkt;
|
|
@@ -43,34 +43,43 @@ static int flush_pkt(git_pkt **out)
|
|
|
43
43
|
static int ack_pkt(git_pkt **out, const char *line, size_t len)
|
|
44
44
|
{
|
|
45
45
|
git_pkt_ack *pkt;
|
|
46
|
-
GIT_UNUSED(line);
|
|
47
|
-
GIT_UNUSED(len);
|
|
48
46
|
|
|
49
47
|
pkt = git__calloc(1, sizeof(git_pkt_ack));
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
52
49
|
pkt->type = GIT_PKT_ACK;
|
|
53
|
-
line += 3;
|
|
54
|
-
len -= 3;
|
|
55
50
|
|
|
56
|
-
if (len
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
51
|
+
if (git__prefixncmp(line, len, "ACK "))
|
|
52
|
+
goto out_err;
|
|
53
|
+
line += 4;
|
|
54
|
+
len -= 4;
|
|
55
|
+
|
|
56
|
+
if (len < GIT_OID_HEXSZ || git_oid_fromstr(&pkt->oid, line) < 0)
|
|
57
|
+
goto out_err;
|
|
58
|
+
line += GIT_OID_HEXSZ;
|
|
59
|
+
len -= GIT_OID_HEXSZ;
|
|
61
60
|
|
|
62
|
-
if (len
|
|
63
|
-
|
|
61
|
+
if (len && line[0] == ' ') {
|
|
62
|
+
line++;
|
|
63
|
+
len--;
|
|
64
|
+
|
|
65
|
+
if (!git__prefixncmp(line, len, "continue"))
|
|
64
66
|
pkt->status = GIT_ACK_CONTINUE;
|
|
65
|
-
if (!
|
|
67
|
+
else if (!git__prefixncmp(line, len, "common"))
|
|
66
68
|
pkt->status = GIT_ACK_COMMON;
|
|
67
|
-
if (!
|
|
69
|
+
else if (!git__prefixncmp(line, len, "ready"))
|
|
68
70
|
pkt->status = GIT_ACK_READY;
|
|
71
|
+
else
|
|
72
|
+
goto out_err;
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
*out = (git_pkt *) pkt;
|
|
72
76
|
|
|
73
77
|
return 0;
|
|
78
|
+
|
|
79
|
+
out_err:
|
|
80
|
+
git_error_set(GIT_ERROR_NET, "error parsing ACK pkt-line");
|
|
81
|
+
git__free(pkt);
|
|
82
|
+
return -1;
|
|
74
83
|
}
|
|
75
84
|
|
|
76
85
|
static int nak_pkt(git_pkt **out)
|
|
@@ -78,7 +87,7 @@ static int nak_pkt(git_pkt **out)
|
|
|
78
87
|
git_pkt *pkt;
|
|
79
88
|
|
|
80
89
|
pkt = git__malloc(sizeof(git_pkt));
|
|
81
|
-
|
|
90
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
82
91
|
|
|
83
92
|
pkt->type = GIT_PKT_NAK;
|
|
84
93
|
*out = pkt;
|
|
@@ -86,28 +95,15 @@ static int nak_pkt(git_pkt **out)
|
|
|
86
95
|
return 0;
|
|
87
96
|
}
|
|
88
97
|
|
|
89
|
-
static int pack_pkt(git_pkt **out)
|
|
90
|
-
{
|
|
91
|
-
git_pkt *pkt;
|
|
92
|
-
|
|
93
|
-
pkt = git__malloc(sizeof(git_pkt));
|
|
94
|
-
GITERR_CHECK_ALLOC(pkt);
|
|
95
|
-
|
|
96
|
-
pkt->type = GIT_PKT_PACK;
|
|
97
|
-
*out = pkt;
|
|
98
|
-
|
|
99
|
-
return 0;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
98
|
static int comment_pkt(git_pkt **out, const char *line, size_t len)
|
|
103
99
|
{
|
|
104
100
|
git_pkt_comment *pkt;
|
|
105
101
|
size_t alloclen;
|
|
106
102
|
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, sizeof(git_pkt_comment), len);
|
|
104
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, 1);
|
|
109
105
|
pkt = git__malloc(alloclen);
|
|
110
|
-
|
|
106
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
111
107
|
|
|
112
108
|
pkt->type = GIT_PKT_COMMENT;
|
|
113
109
|
memcpy(pkt->comment, line, len);
|
|
@@ -120,26 +116,33 @@ static int comment_pkt(git_pkt **out, const char *line, size_t len)
|
|
|
120
116
|
|
|
121
117
|
static int err_pkt(git_pkt **out, const char *line, size_t len)
|
|
122
118
|
{
|
|
123
|
-
git_pkt_err *pkt;
|
|
119
|
+
git_pkt_err *pkt = NULL;
|
|
124
120
|
size_t alloclen;
|
|
125
121
|
|
|
126
122
|
/* Remove "ERR " from the line */
|
|
123
|
+
if (git__prefixncmp(line, len, "ERR "))
|
|
124
|
+
goto out_err;
|
|
127
125
|
line += 4;
|
|
128
126
|
len -= 4;
|
|
129
127
|
|
|
130
|
-
|
|
131
|
-
|
|
128
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, sizeof(git_pkt_progress), len);
|
|
129
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, alloclen, 1);
|
|
132
130
|
pkt = git__malloc(alloclen);
|
|
133
|
-
|
|
134
|
-
|
|
131
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
135
132
|
pkt->type = GIT_PKT_ERR;
|
|
136
|
-
pkt->len =
|
|
133
|
+
pkt->len = len;
|
|
134
|
+
|
|
137
135
|
memcpy(pkt->error, line, len);
|
|
138
136
|
pkt->error[len] = '\0';
|
|
139
137
|
|
|
140
138
|
*out = (git_pkt *) pkt;
|
|
141
139
|
|
|
142
140
|
return 0;
|
|
141
|
+
|
|
142
|
+
out_err:
|
|
143
|
+
git_error_set(GIT_ERROR_NET, "error parsing ERR pkt-line");
|
|
144
|
+
git__free(pkt);
|
|
145
|
+
return -1;
|
|
143
146
|
}
|
|
144
147
|
|
|
145
148
|
static int data_pkt(git_pkt **out, const char *line, size_t len)
|
|
@@ -150,12 +153,12 @@ static int data_pkt(git_pkt **out, const char *line, size_t len)
|
|
|
150
153
|
line++;
|
|
151
154
|
len--;
|
|
152
155
|
|
|
153
|
-
|
|
156
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, sizeof(git_pkt_progress), len);
|
|
154
157
|
pkt = git__malloc(alloclen);
|
|
155
|
-
|
|
158
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
156
159
|
|
|
157
160
|
pkt->type = GIT_PKT_DATA;
|
|
158
|
-
pkt->len =
|
|
161
|
+
pkt->len = len;
|
|
159
162
|
memcpy(pkt->data, line, len);
|
|
160
163
|
|
|
161
164
|
*out = (git_pkt *) pkt;
|
|
@@ -171,12 +174,12 @@ static int sideband_progress_pkt(git_pkt **out, const char *line, size_t len)
|
|
|
171
174
|
line++;
|
|
172
175
|
len--;
|
|
173
176
|
|
|
174
|
-
|
|
177
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, sizeof(git_pkt_progress), len);
|
|
175
178
|
pkt = git__malloc(alloclen);
|
|
176
|
-
|
|
179
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
177
180
|
|
|
178
181
|
pkt->type = GIT_PKT_PROGRESS;
|
|
179
|
-
pkt->len =
|
|
182
|
+
pkt->len = len;
|
|
180
183
|
memcpy(pkt->data, line, len);
|
|
181
184
|
|
|
182
185
|
*out = (git_pkt *) pkt;
|
|
@@ -192,10 +195,10 @@ static int sideband_error_pkt(git_pkt **out, const char *line, size_t len)
|
|
|
192
195
|
line++;
|
|
193
196
|
len--;
|
|
194
197
|
|
|
195
|
-
|
|
196
|
-
|
|
198
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, sizeof(git_pkt_err), len);
|
|
199
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 1);
|
|
197
200
|
pkt = git__malloc(alloc_len);
|
|
198
|
-
|
|
201
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
199
202
|
|
|
200
203
|
pkt->type = GIT_PKT_ERR;
|
|
201
204
|
pkt->len = (int)len;
|
|
@@ -212,118 +215,123 @@ static int sideband_error_pkt(git_pkt **out, const char *line, size_t len)
|
|
|
212
215
|
*/
|
|
213
216
|
static int ref_pkt(git_pkt **out, const char *line, size_t len)
|
|
214
217
|
{
|
|
215
|
-
int error;
|
|
216
218
|
git_pkt_ref *pkt;
|
|
217
219
|
size_t alloclen;
|
|
218
220
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
221
|
+
pkt = git__calloc(1, sizeof(git_pkt_ref));
|
|
222
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
223
|
+
pkt->type = GIT_PKT_REF;
|
|
223
224
|
|
|
224
|
-
|
|
225
|
-
|
|
225
|
+
if (len < GIT_OID_HEXSZ || git_oid_fromstr(&pkt->head.oid, line) < 0)
|
|
226
|
+
goto out_err;
|
|
227
|
+
line += GIT_OID_HEXSZ;
|
|
228
|
+
len -= GIT_OID_HEXSZ;
|
|
226
229
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
/* Check for a bit of consistency */
|
|
233
|
-
if (line[GIT_OID_HEXSZ] != ' ') {
|
|
234
|
-
giterr_set(GITERR_NET, "error parsing pkt-line");
|
|
235
|
-
error = -1;
|
|
236
|
-
goto error_out;
|
|
237
|
-
}
|
|
230
|
+
if (git__prefixncmp(line, len, " "))
|
|
231
|
+
goto out_err;
|
|
232
|
+
line++;
|
|
233
|
+
len--;
|
|
238
234
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
len -= (GIT_OID_HEXSZ + 1);
|
|
235
|
+
if (!len)
|
|
236
|
+
goto out_err;
|
|
242
237
|
|
|
243
238
|
if (line[len - 1] == '\n')
|
|
244
239
|
--len;
|
|
245
240
|
|
|
246
|
-
|
|
241
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, len, 1);
|
|
247
242
|
pkt->head.name = git__malloc(alloclen);
|
|
248
|
-
|
|
243
|
+
GIT_ERROR_CHECK_ALLOC(pkt->head.name);
|
|
249
244
|
|
|
250
245
|
memcpy(pkt->head.name, line, len);
|
|
251
246
|
pkt->head.name[len] = '\0';
|
|
252
247
|
|
|
253
|
-
if (strlen(pkt->head.name) < len)
|
|
248
|
+
if (strlen(pkt->head.name) < len)
|
|
254
249
|
pkt->capabilities = strchr(pkt->head.name, '\0') + 1;
|
|
255
|
-
}
|
|
256
250
|
|
|
257
251
|
*out = (git_pkt *)pkt;
|
|
258
252
|
return 0;
|
|
259
253
|
|
|
260
|
-
|
|
254
|
+
out_err:
|
|
255
|
+
git_error_set(GIT_ERROR_NET, "error parsing REF pkt-line");
|
|
256
|
+
if (pkt)
|
|
257
|
+
git__free(pkt->head.name);
|
|
261
258
|
git__free(pkt);
|
|
262
|
-
return
|
|
259
|
+
return -1;
|
|
263
260
|
}
|
|
264
261
|
|
|
265
262
|
static int ok_pkt(git_pkt **out, const char *line, size_t len)
|
|
266
263
|
{
|
|
267
264
|
git_pkt_ok *pkt;
|
|
268
|
-
const char *ptr;
|
|
269
265
|
size_t alloc_len;
|
|
270
266
|
|
|
271
267
|
pkt = git__malloc(sizeof(*pkt));
|
|
272
|
-
|
|
273
|
-
|
|
268
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
274
269
|
pkt->type = GIT_PKT_OK;
|
|
275
270
|
|
|
276
|
-
line
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
return -1;
|
|
281
|
-
}
|
|
282
|
-
len = ptr - line;
|
|
271
|
+
if (git__prefixncmp(line, len, "ok "))
|
|
272
|
+
goto out_err;
|
|
273
|
+
line += 3;
|
|
274
|
+
len -= 3;
|
|
283
275
|
|
|
284
|
-
|
|
276
|
+
if (line[len - 1] == '\n')
|
|
277
|
+
--len;
|
|
278
|
+
|
|
279
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, len, 1);
|
|
285
280
|
pkt->ref = git__malloc(alloc_len);
|
|
286
|
-
|
|
281
|
+
GIT_ERROR_CHECK_ALLOC(pkt->ref);
|
|
287
282
|
|
|
288
283
|
memcpy(pkt->ref, line, len);
|
|
289
284
|
pkt->ref[len] = '\0';
|
|
290
285
|
|
|
291
286
|
*out = (git_pkt *)pkt;
|
|
292
287
|
return 0;
|
|
288
|
+
|
|
289
|
+
out_err:
|
|
290
|
+
git_error_set(GIT_ERROR_NET, "error parsing OK pkt-line");
|
|
291
|
+
git__free(pkt);
|
|
292
|
+
return -1;
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
static int ng_pkt(git_pkt **out, const char *line, size_t len)
|
|
296
296
|
{
|
|
297
297
|
git_pkt_ng *pkt;
|
|
298
|
-
const char *ptr;
|
|
298
|
+
const char *ptr, *eol;
|
|
299
299
|
size_t alloclen;
|
|
300
300
|
|
|
301
301
|
pkt = git__malloc(sizeof(*pkt));
|
|
302
|
-
|
|
302
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
303
303
|
|
|
304
304
|
pkt->ref = NULL;
|
|
305
305
|
pkt->type = GIT_PKT_NG;
|
|
306
306
|
|
|
307
|
-
line
|
|
308
|
-
|
|
307
|
+
eol = line + len;
|
|
308
|
+
|
|
309
|
+
if (git__prefixncmp(line, len, "ng "))
|
|
310
|
+
goto out_err;
|
|
311
|
+
line += 3;
|
|
312
|
+
|
|
313
|
+
if (!(ptr = memchr(line, ' ', eol - line)))
|
|
309
314
|
goto out_err;
|
|
310
315
|
len = ptr - line;
|
|
311
316
|
|
|
312
|
-
|
|
317
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, len, 1);
|
|
313
318
|
pkt->ref = git__malloc(alloclen);
|
|
314
|
-
|
|
319
|
+
GIT_ERROR_CHECK_ALLOC(pkt->ref);
|
|
315
320
|
|
|
316
321
|
memcpy(pkt->ref, line, len);
|
|
317
322
|
pkt->ref[len] = '\0';
|
|
318
323
|
|
|
319
324
|
line = ptr + 1;
|
|
320
|
-
if (
|
|
325
|
+
if (line >= eol)
|
|
326
|
+
goto out_err;
|
|
327
|
+
|
|
328
|
+
if (!(ptr = memchr(line, '\n', eol - line)))
|
|
321
329
|
goto out_err;
|
|
322
330
|
len = ptr - line;
|
|
323
331
|
|
|
324
|
-
|
|
332
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloclen, len, 1);
|
|
325
333
|
pkt->msg = git__malloc(alloclen);
|
|
326
|
-
|
|
334
|
+
GIT_ERROR_CHECK_ALLOC(pkt->msg);
|
|
327
335
|
|
|
328
336
|
memcpy(pkt->msg, line, len);
|
|
329
337
|
pkt->msg[len] = '\0';
|
|
@@ -332,7 +340,7 @@ static int ng_pkt(git_pkt **out, const char *line, size_t len)
|
|
|
332
340
|
return 0;
|
|
333
341
|
|
|
334
342
|
out_err:
|
|
335
|
-
|
|
343
|
+
git_error_set(GIT_ERROR_NET, "invalid packet line");
|
|
336
344
|
git__free(pkt->ref);
|
|
337
345
|
git__free(pkt);
|
|
338
346
|
return -1;
|
|
@@ -342,13 +350,11 @@ static int unpack_pkt(git_pkt **out, const char *line, size_t len)
|
|
|
342
350
|
{
|
|
343
351
|
git_pkt_unpack *pkt;
|
|
344
352
|
|
|
345
|
-
GIT_UNUSED(len);
|
|
346
|
-
|
|
347
353
|
pkt = git__malloc(sizeof(*pkt));
|
|
348
|
-
|
|
349
|
-
|
|
354
|
+
GIT_ERROR_CHECK_ALLOC(pkt);
|
|
350
355
|
pkt->type = GIT_PKT_UNPACK;
|
|
351
|
-
|
|
356
|
+
|
|
357
|
+
if (!git__prefixncmp(line, len, "unpack ok"))
|
|
352
358
|
pkt->unpack_ok = 1;
|
|
353
359
|
else
|
|
354
360
|
pkt->unpack_ok = 0;
|
|
@@ -357,13 +363,17 @@ static int unpack_pkt(git_pkt **out, const char *line, size_t len)
|
|
|
357
363
|
return 0;
|
|
358
364
|
}
|
|
359
365
|
|
|
360
|
-
static
|
|
366
|
+
static int parse_len(size_t *out, const char *line, size_t linelen)
|
|
361
367
|
{
|
|
362
368
|
char num[PKT_LEN_SIZE + 1];
|
|
363
369
|
int i, k, error;
|
|
364
370
|
int32_t len;
|
|
365
371
|
const char *num_end;
|
|
366
372
|
|
|
373
|
+
/* Not even enough for the length */
|
|
374
|
+
if (linelen < PKT_LEN_SIZE)
|
|
375
|
+
return GIT_EBUFS;
|
|
376
|
+
|
|
367
377
|
memcpy(num, line, PKT_LEN_SIZE);
|
|
368
378
|
num[PKT_LEN_SIZE] = '\0';
|
|
369
379
|
|
|
@@ -376,15 +386,19 @@ static int32_t parse_len(const char *line)
|
|
|
376
386
|
}
|
|
377
387
|
}
|
|
378
388
|
|
|
379
|
-
|
|
389
|
+
git_error_set(GIT_ERROR_NET, "invalid hex digit in length: '%s'", num);
|
|
380
390
|
return -1;
|
|
381
391
|
}
|
|
382
392
|
}
|
|
383
393
|
|
|
384
|
-
if ((error =
|
|
394
|
+
if ((error = git__strntol32(&len, num, PKT_LEN_SIZE, &num_end, 16)) < 0)
|
|
385
395
|
return error;
|
|
386
396
|
|
|
387
|
-
|
|
397
|
+
if (len < 0)
|
|
398
|
+
return -1;
|
|
399
|
+
|
|
400
|
+
*out = (size_t) len;
|
|
401
|
+
return 0;
|
|
388
402
|
}
|
|
389
403
|
|
|
390
404
|
/*
|
|
@@ -401,35 +415,32 @@ static int32_t parse_len(const char *line)
|
|
|
401
415
|
*/
|
|
402
416
|
|
|
403
417
|
int git_pkt_parse_line(
|
|
404
|
-
git_pkt **
|
|
418
|
+
git_pkt **pkt, const char **endptr, const char *line, size_t linelen)
|
|
405
419
|
{
|
|
406
|
-
int
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
/* Not even enough for the length */
|
|
410
|
-
if (bufflen > 0 && bufflen < PKT_LEN_SIZE)
|
|
411
|
-
return GIT_EBUFS;
|
|
420
|
+
int error;
|
|
421
|
+
size_t len;
|
|
412
422
|
|
|
413
|
-
|
|
414
|
-
if (len < 0) {
|
|
423
|
+
if ((error = parse_len(&len, line, linelen)) < 0) {
|
|
415
424
|
/*
|
|
416
|
-
* If we fail to parse the length, it might be
|
|
417
|
-
* server is trying to send us the
|
|
425
|
+
* If we fail to parse the length, it might be
|
|
426
|
+
* because the server is trying to send us the
|
|
427
|
+
* packfile already or because we do not yet have
|
|
428
|
+
* enough data.
|
|
418
429
|
*/
|
|
419
|
-
if (
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
return
|
|
430
|
+
if (error == GIT_EBUFS)
|
|
431
|
+
;
|
|
432
|
+
else if (!git__prefixncmp(line, linelen, "PACK"))
|
|
433
|
+
git_error_set(GIT_ERROR_NET, "unexpected pack file");
|
|
434
|
+
else
|
|
435
|
+
git_error_set(GIT_ERROR_NET, "bad packet length");
|
|
436
|
+
return error;
|
|
426
437
|
}
|
|
427
438
|
|
|
428
439
|
/*
|
|
429
|
-
*
|
|
430
|
-
*
|
|
440
|
+
* Make sure there is enough in the buffer to satisfy
|
|
441
|
+
* this line.
|
|
431
442
|
*/
|
|
432
|
-
if (
|
|
443
|
+
if (linelen < len)
|
|
433
444
|
return GIT_EBUFS;
|
|
434
445
|
|
|
435
446
|
/*
|
|
@@ -447,43 +458,43 @@ int git_pkt_parse_line(
|
|
|
447
458
|
* line, we should return an error upon hitting one.
|
|
448
459
|
*/
|
|
449
460
|
if (len == PKT_LEN_SIZE) {
|
|
450
|
-
|
|
461
|
+
git_error_set_str(GIT_ERROR_NET, "Invalid empty packet");
|
|
451
462
|
return GIT_ERROR;
|
|
452
463
|
}
|
|
453
464
|
|
|
454
465
|
if (len == 0) { /* Flush pkt */
|
|
455
|
-
*
|
|
456
|
-
return flush_pkt(
|
|
466
|
+
*endptr = line;
|
|
467
|
+
return flush_pkt(pkt);
|
|
457
468
|
}
|
|
458
469
|
|
|
459
470
|
len -= PKT_LEN_SIZE; /* the encoded length includes its own size */
|
|
460
471
|
|
|
461
472
|
if (*line == GIT_SIDE_BAND_DATA)
|
|
462
|
-
|
|
473
|
+
error = data_pkt(pkt, line, len);
|
|
463
474
|
else if (*line == GIT_SIDE_BAND_PROGRESS)
|
|
464
|
-
|
|
475
|
+
error = sideband_progress_pkt(pkt, line, len);
|
|
465
476
|
else if (*line == GIT_SIDE_BAND_ERROR)
|
|
466
|
-
|
|
467
|
-
else if (!
|
|
468
|
-
|
|
469
|
-
else if (!
|
|
470
|
-
|
|
471
|
-
else if (!
|
|
472
|
-
|
|
477
|
+
error = sideband_error_pkt(pkt, line, len);
|
|
478
|
+
else if (!git__prefixncmp(line, len, "ACK"))
|
|
479
|
+
error = ack_pkt(pkt, line, len);
|
|
480
|
+
else if (!git__prefixncmp(line, len, "NAK"))
|
|
481
|
+
error = nak_pkt(pkt);
|
|
482
|
+
else if (!git__prefixncmp(line, len, "ERR"))
|
|
483
|
+
error = err_pkt(pkt, line, len);
|
|
473
484
|
else if (*line == '#')
|
|
474
|
-
|
|
475
|
-
else if (!
|
|
476
|
-
|
|
477
|
-
else if (!
|
|
478
|
-
|
|
479
|
-
else if (!
|
|
480
|
-
|
|
485
|
+
error = comment_pkt(pkt, line, len);
|
|
486
|
+
else if (!git__prefixncmp(line, len, "ok"))
|
|
487
|
+
error = ok_pkt(pkt, line, len);
|
|
488
|
+
else if (!git__prefixncmp(line, len, "ng"))
|
|
489
|
+
error = ng_pkt(pkt, line, len);
|
|
490
|
+
else if (!git__prefixncmp(line, len, "unpack"))
|
|
491
|
+
error = unpack_pkt(pkt, line, len);
|
|
481
492
|
else
|
|
482
|
-
|
|
493
|
+
error = ref_pkt(pkt, line, len);
|
|
483
494
|
|
|
484
|
-
*
|
|
495
|
+
*endptr = line + len;
|
|
485
496
|
|
|
486
|
-
return
|
|
497
|
+
return error;
|
|
487
498
|
}
|
|
488
499
|
|
|
489
500
|
void git_pkt_free(git_pkt *pkt)
|
|
@@ -550,7 +561,7 @@ static int buffer_want_with_caps(const git_remote_head *head, transport_smart_ca
|
|
|
550
561
|
git_buf_len(&str) + 1 /* LF */;
|
|
551
562
|
|
|
552
563
|
if (len > 0xffff) {
|
|
553
|
-
|
|
564
|
+
git_error_set(GIT_ERROR_NET,
|
|
554
565
|
"tried to produce packet with invalid length %" PRIuZ, len);
|
|
555
566
|
return -1;
|
|
556
567
|
}
|
|
@@ -561,7 +572,7 @@ static int buffer_want_with_caps(const git_remote_head *head, transport_smart_ca
|
|
|
561
572
|
"%04xwant %s %s\n", (unsigned int)len, oid, git_buf_cstr(&str));
|
|
562
573
|
git_buf_dispose(&str);
|
|
563
574
|
|
|
564
|
-
|
|
575
|
+
GIT_ERROR_CHECK_ALLOC_BUF(buf);
|
|
565
576
|
|
|
566
577
|
return 0;
|
|
567
578
|
}
|