rugged 0.27.9 → 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 +98 -54
- data/vendor/libgit2/COPYING +28 -0
- data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
- 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/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/FindmbedTLS.cmake +93 -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/CMakeLists.txt +2 -0
- data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -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.h +5 -0
- 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 +38 -20
- data/vendor/libgit2/include/git2/blame.h +42 -25
- data/vendor/libgit2/include/git2/blob.h +45 -13
- data/vendor/libgit2/include/git2/branch.h +1 -1
- data/vendor/libgit2/include/git2/buffer.h +22 -16
- data/vendor/libgit2/include/git2/cert.h +135 -0
- data/vendor/libgit2/include/git2/checkout.h +65 -32
- data/vendor/libgit2/include/git2/cherrypick.h +9 -7
- data/vendor/libgit2/include/git2/clone.h +12 -10
- data/vendor/libgit2/include/git2/commit.h +53 -3
- data/vendor/libgit2/include/git2/common.h +60 -8
- data/vendor/libgit2/include/git2/config.h +30 -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 +32 -9
- data/vendor/libgit2/include/git2/diff.h +208 -156
- data/vendor/libgit2/include/git2/errors.h +54 -46
- data/vendor/libgit2/include/git2/filter.h +8 -0
- data/vendor/libgit2/include/git2/ignore.h +2 -2
- data/vendor/libgit2/include/git2/index.h +74 -52
- data/vendor/libgit2/include/git2/indexer.h +76 -6
- data/vendor/libgit2/include/git2/mailmap.h +115 -0
- data/vendor/libgit2/include/git2/merge.h +35 -18
- 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 +14 -8
- data/vendor/libgit2/include/git2/rebase.h +53 -6
- data/vendor/libgit2/include/git2/refs.h +33 -15
- data/vendor/libgit2/include/git2/refspec.h +17 -0
- data/vendor/libgit2/include/git2/remote.h +123 -24
- data/vendor/libgit2/include/git2/repository.h +76 -39
- data/vendor/libgit2/include/git2/revert.h +6 -4
- 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 +15 -12
- data/vendor/libgit2/include/git2/status.h +33 -20
- data/vendor/libgit2/include/git2/submodule.h +30 -12
- data/vendor/libgit2/include/git2/sys/alloc.h +101 -0
- 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/index.h +3 -0
- data/vendor/libgit2/include/git2/sys/mempack.h +35 -35
- data/vendor/libgit2/include/git2/sys/merge.h +9 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
- data/vendor/libgit2/include/git2/sys/path.h +64 -0
- 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/transaction.h +1 -0
- 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 +33 -111
- data/vendor/libgit2/include/git2/version.h +4 -4
- data/vendor/libgit2/include/git2/worktree.h +48 -13
- data/vendor/libgit2/src/CMakeLists.txt +96 -164
- data/vendor/libgit2/src/alloc.c +43 -0
- data/vendor/libgit2/src/alloc.h +40 -0
- data/vendor/libgit2/src/allocators/stdalloc.c +119 -0
- data/vendor/libgit2/src/{streams/curl.h → allocators/stdalloc.h} +5 -5
- 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 +15 -8
- data/vendor/libgit2/src/apply.c +537 -31
- data/vendor/libgit2/src/apply.h +3 -1
- data/vendor/libgit2/src/array.h +2 -2
- data/vendor/libgit2/src/attr.c +81 -75
- data/vendor/libgit2/src/attr_file.c +207 -121
- data/vendor/libgit2/src/attr_file.h +9 -9
- data/vendor/libgit2/src/attrcache.c +51 -53
- data/vendor/libgit2/src/attrcache.h +2 -1
- data/vendor/libgit2/src/blame.c +47 -20
- data/vendor/libgit2/src/blame.h +2 -1
- data/vendor/libgit2/src/blame_git.c +37 -20
- data/vendor/libgit2/src/blob.c +128 -42
- data/vendor/libgit2/src/blob.h +19 -2
- data/vendor/libgit2/src/branch.c +67 -43
- data/vendor/libgit2/src/buf_text.c +7 -6
- data/vendor/libgit2/src/buffer.c +69 -57
- data/vendor/libgit2/src/buffer.h +1 -1
- 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 +109 -90
- data/vendor/libgit2/src/cherrypick.c +15 -9
- data/vendor/libgit2/src/clone.c +49 -27
- data/vendor/libgit2/src/clone.h +4 -0
- data/vendor/libgit2/src/commit.c +117 -49
- data/vendor/libgit2/src/commit.h +7 -0
- data/vendor/libgit2/src/commit_list.c +30 -78
- data/vendor/libgit2/src/commit_list.h +2 -2
- data/vendor/libgit2/src/common.h +27 -91
- data/vendor/libgit2/src/config.c +194 -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 +439 -753
- data/vendor/libgit2/src/config_mem.c +220 -0
- data/vendor/libgit2/src/config_parse.c +114 -63
- data/vendor/libgit2/src/config_parse.h +17 -16
- data/vendor/libgit2/src/config_snapshot.c +206 -0
- data/vendor/libgit2/src/crlf.c +219 -190
- data/vendor/libgit2/src/delta.c +25 -18
- data/vendor/libgit2/src/describe.c +42 -41
- data/vendor/libgit2/src/diff.c +53 -68
- data/vendor/libgit2/src/diff.h +2 -1
- data/vendor/libgit2/src/diff_driver.c +47 -49
- data/vendor/libgit2/src/diff_file.c +19 -17
- data/vendor/libgit2/src/diff_file.h +1 -1
- data/vendor/libgit2/src/diff_generate.c +162 -106
- 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 +42 -30
- data/vendor/libgit2/src/diff_stats.c +22 -7
- data/vendor/libgit2/src/diff_tform.c +16 -16
- data/vendor/libgit2/src/diff_xdiff.c +15 -3
- data/vendor/libgit2/src/errors.c +51 -39
- data/vendor/libgit2/src/errors.h +81 -0
- data/vendor/libgit2/src/features.h.in +11 -3
- data/vendor/libgit2/src/fetch.c +10 -5
- data/vendor/libgit2/src/fetchhead.c +17 -17
- data/vendor/libgit2/src/filebuf.c +32 -36
- data/vendor/libgit2/src/filebuf.h +2 -2
- data/vendor/libgit2/src/filter.c +46 -38
- data/vendor/libgit2/src/filter.h +0 -10
- data/vendor/libgit2/src/{fileops.c → futils.c} +80 -73
- data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
- data/vendor/libgit2/src/global.c +48 -63
- data/vendor/libgit2/src/global.h +0 -2
- data/vendor/libgit2/src/hash.c +61 -0
- data/vendor/libgit2/src/hash.h +20 -19
- data/vendor/libgit2/src/hash/sha1.h +38 -0
- 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/sha1/mbedtls.c +46 -0
- data/vendor/libgit2/src/hash/sha1/mbedtls.h +19 -0
- 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/{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
- 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/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 +43 -47
- data/vendor/libgit2/src/index.c +337 -232
- data/vendor/libgit2/src/index.h +17 -1
- data/vendor/libgit2/src/indexer.c +346 -175
- data/vendor/libgit2/src/integer.h +71 -26
- data/vendor/libgit2/src/iterator.c +142 -70
- data/vendor/libgit2/src/iterator.h +15 -0
- data/vendor/libgit2/src/khash.h +3 -1
- data/vendor/libgit2/src/mailmap.c +485 -0
- data/vendor/libgit2/src/mailmap.h +35 -0
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +144 -100
- 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 +16 -11
- 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 +116 -93
- data/vendor/libgit2/src/odb.h +8 -7
- data/vendor/libgit2/src/odb_loose.c +62 -55
- data/vendor/libgit2/src/odb_mempack.c +21 -34
- data/vendor/libgit2/src/odb_pack.c +18 -14
- 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 +88 -87
- data/vendor/libgit2/src/pack-objects.h +2 -8
- data/vendor/libgit2/src/pack.c +99 -101
- data/vendor/libgit2/src/pack.h +17 -19
- data/vendor/libgit2/src/parse.c +10 -0
- data/vendor/libgit2/src/parse.h +3 -3
- data/vendor/libgit2/src/patch.c +4 -4
- data/vendor/libgit2/src/patch_generate.c +20 -20
- data/vendor/libgit2/src/patch_parse.c +151 -63
- data/vendor/libgit2/src/path.c +169 -125
- data/vendor/libgit2/src/path.h +3 -71
- data/vendor/libgit2/src/pathspec.c +19 -19
- 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 +37 -31
- 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 +115 -59
- data/vendor/libgit2/src/refdb.c +15 -3
- data/vendor/libgit2/src/refdb_fs.c +381 -254
- data/vendor/libgit2/src/reflog.c +13 -15
- data/vendor/libgit2/src/refs.c +118 -88
- data/vendor/libgit2/src/refs.h +5 -3
- data/vendor/libgit2/src/refspec.c +56 -37
- data/vendor/libgit2/src/refspec.h +1 -1
- data/vendor/libgit2/src/regexp.c +221 -0
- data/vendor/libgit2/src/regexp.h +97 -0
- data/vendor/libgit2/src/remote.c +266 -215
- data/vendor/libgit2/src/remote.h +11 -2
- data/vendor/libgit2/src/repository.c +280 -225
- data/vendor/libgit2/src/repository.h +52 -40
- data/vendor/libgit2/src/reset.c +8 -8
- data/vendor/libgit2/src/revert.c +14 -9
- data/vendor/libgit2/src/revparse.c +47 -48
- data/vendor/libgit2/src/revwalk.c +120 -57
- data/vendor/libgit2/src/revwalk.h +22 -1
- data/vendor/libgit2/src/settings.c +47 -10
- data/vendor/libgit2/src/signature.c +11 -11
- data/vendor/libgit2/src/sortedcache.c +22 -36
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +125 -99
- data/vendor/libgit2/src/status.c +28 -22
- data/vendor/libgit2/src/stream.h +17 -2
- data/vendor/libgit2/src/streams/mbedtls.c +483 -0
- data/vendor/libgit2/src/streams/mbedtls.h +23 -0
- data/vendor/libgit2/src/streams/openssl.c +224 -114
- data/vendor/libgit2/src/streams/openssl.h +4 -108
- 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 +50 -19
- 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 +272 -216
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +29 -19
- data/vendor/libgit2/src/tag.c +41 -28
- data/vendor/libgit2/src/tag.h +2 -1
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +3 -3
- data/vendor/libgit2/src/trailer.c +52 -38
- data/vendor/libgit2/src/transaction.c +30 -29
- data/vendor/libgit2/src/transport.c +5 -5
- data/vendor/libgit2/src/transports/auth.c +15 -11
- data/vendor/libgit2/src/transports/auth.h +10 -3
- data/vendor/libgit2/src/transports/auth_negotiate.c +33 -18
- 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 +26 -31
- data/vendor/libgit2/src/transports/http.c +881 -348
- data/vendor/libgit2/src/transports/http.h +2 -0
- data/vendor/libgit2/src/transports/local.c +35 -35
- data/vendor/libgit2/src/transports/smart.c +70 -47
- data/vendor/libgit2/src/transports/smart.h +3 -4
- data/vendor/libgit2/src/transports/smart_pkt.c +43 -40
- data/vendor/libgit2/src/transports/smart_protocol.c +96 -116
- data/vendor/libgit2/src/transports/ssh.c +77 -66
- data/vendor/libgit2/src/transports/winhttp.c +318 -314
- data/vendor/libgit2/src/tree-cache.c +19 -12
- data/vendor/libgit2/src/tree.c +103 -142
- data/vendor/libgit2/src/tree.h +1 -12
- 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 +70 -56
- data/vendor/libgit2/src/util.h +28 -156
- data/vendor/libgit2/src/vector.c +4 -4
- 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 +3 -3
- 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 +70 -45
- 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 +3 -2
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +26 -75
- 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 +95 -60
- data/vendor/libgit2/src/worktree.h +2 -0
- data/vendor/libgit2/src/xdiff/xdiffi.c +7 -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 +122 -33
- 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/pack.h
CHANGED
@@ -17,6 +17,7 @@
|
|
17
17
|
#include "map.h"
|
18
18
|
#include "mwindow.h"
|
19
19
|
#include "odb.h"
|
20
|
+
#include "offmap.h"
|
20
21
|
#include "oidmap.h"
|
21
22
|
#include "array.h"
|
22
23
|
|
@@ -63,17 +64,14 @@ typedef struct git_pack_cache_entry {
|
|
63
64
|
} git_pack_cache_entry;
|
64
65
|
|
65
66
|
struct pack_chain_elem {
|
66
|
-
|
67
|
-
|
67
|
+
off64_t base_key;
|
68
|
+
off64_t offset;
|
68
69
|
size_t size;
|
69
|
-
|
70
|
+
git_object_t type;
|
70
71
|
};
|
71
72
|
|
72
73
|
typedef git_array_t(struct pack_chain_elem) git_dependency_chain;
|
73
74
|
|
74
|
-
#include "offmap.h"
|
75
|
-
#include "oidmap.h"
|
76
|
-
|
77
75
|
#define GIT_PACK_CACHE_MEMORY_LIMIT 16 * 1024 * 1024
|
78
76
|
#define GIT_PACK_CACHE_SIZE_LIMIT 1024 * 1024 /* don't bother caching anything over 1MB */
|
79
77
|
|
@@ -110,45 +108,45 @@ struct git_pack_file {
|
|
110
108
|
};
|
111
109
|
|
112
110
|
struct git_pack_entry {
|
113
|
-
|
111
|
+
off64_t offset;
|
114
112
|
git_oid sha1;
|
115
113
|
struct git_pack_file *p;
|
116
114
|
};
|
117
115
|
|
118
116
|
typedef struct git_packfile_stream {
|
119
|
-
|
117
|
+
off64_t curpos;
|
120
118
|
int done;
|
121
119
|
z_stream zstream;
|
122
120
|
struct git_pack_file *p;
|
123
121
|
git_mwindow *mw;
|
124
122
|
} git_packfile_stream;
|
125
123
|
|
126
|
-
size_t git_packfile__object_header(unsigned char *hdr, size_t size,
|
124
|
+
size_t git_packfile__object_header(unsigned char *hdr, size_t size, git_object_t type);
|
127
125
|
|
128
126
|
int git_packfile__name(char **out, const char *path);
|
129
127
|
|
130
128
|
int git_packfile_unpack_header(
|
131
129
|
size_t *size_p,
|
132
|
-
|
130
|
+
git_object_t *type_p,
|
133
131
|
git_mwindow_file *mwf,
|
134
132
|
git_mwindow **w_curs,
|
135
|
-
|
133
|
+
off64_t *curpos);
|
136
134
|
|
137
135
|
int git_packfile_resolve_header(
|
138
136
|
size_t *size_p,
|
139
|
-
|
137
|
+
git_object_t *type_p,
|
140
138
|
struct git_pack_file *p,
|
141
|
-
|
139
|
+
off64_t offset);
|
142
140
|
|
143
|
-
int git_packfile_unpack(git_rawobj *obj, struct git_pack_file *p,
|
141
|
+
int git_packfile_unpack(git_rawobj *obj, struct git_pack_file *p, off64_t *obj_offset);
|
144
142
|
|
145
|
-
int git_packfile_stream_open(git_packfile_stream *obj, struct git_pack_file *p,
|
143
|
+
int git_packfile_stream_open(git_packfile_stream *obj, struct git_pack_file *p, off64_t curpos);
|
146
144
|
ssize_t git_packfile_stream_read(git_packfile_stream *obj, void *buffer, size_t len);
|
147
|
-
void
|
145
|
+
void git_packfile_stream_dispose(git_packfile_stream *obj);
|
148
146
|
|
149
|
-
|
150
|
-
|
151
|
-
|
147
|
+
off64_t get_delta_base(struct git_pack_file *p, git_mwindow **w_curs,
|
148
|
+
off64_t *curpos, git_object_t type,
|
149
|
+
off64_t delta_obj_offset);
|
152
150
|
|
153
151
|
void git_packfile_close(struct git_pack_file *p, bool unlink_packfile);
|
154
152
|
void git_packfile_free(struct git_pack_file *p);
|
data/vendor/libgit2/src/parse.c
CHANGED
@@ -101,6 +101,16 @@ int git_parse_advance_digit(int64_t *out, git_parse_ctx *ctx, int base)
|
|
101
101
|
return 0;
|
102
102
|
}
|
103
103
|
|
104
|
+
int git_parse_advance_oid(git_oid *out, git_parse_ctx *ctx)
|
105
|
+
{
|
106
|
+
if (ctx->line_len < GIT_OID_HEXSZ)
|
107
|
+
return -1;
|
108
|
+
if ((git_oid_fromstrn(out, ctx->line, GIT_OID_HEXSZ)) < 0)
|
109
|
+
return -1;
|
110
|
+
git_parse_advance_chars(ctx, GIT_OID_HEXSZ);
|
111
|
+
return 0;
|
112
|
+
}
|
113
|
+
|
104
114
|
int git_parse_peek(char *out, git_parse_ctx *ctx, int flags)
|
105
115
|
{
|
106
116
|
size_t remain = ctx->line_len;
|
data/vendor/libgit2/src/parse.h
CHANGED
@@ -23,12 +23,11 @@ typedef struct {
|
|
23
23
|
size_t line_num;
|
24
24
|
} git_parse_ctx;
|
25
25
|
|
26
|
+
#define GIT_PARSE_CTX_INIT { 0 }
|
27
|
+
|
26
28
|
int git_parse_ctx_init(git_parse_ctx *ctx, const char *content, size_t content_len);
|
27
29
|
void git_parse_ctx_clear(git_parse_ctx *ctx);
|
28
30
|
|
29
|
-
#define git_parse_err(...) \
|
30
|
-
( giterr_set(GITERR_PATCH, __VA_ARGS__), -1 )
|
31
|
-
|
32
31
|
#define git_parse_ctx_contains_s(ctx, str) \
|
33
32
|
git_parse_ctx_contains(ctx, str, sizeof(str) - 1)
|
34
33
|
|
@@ -51,6 +50,7 @@ int git_parse_advance_expected(
|
|
51
50
|
int git_parse_advance_ws(git_parse_ctx *ctx);
|
52
51
|
int git_parse_advance_nl(git_parse_ctx *ctx);
|
53
52
|
int git_parse_advance_digit(int64_t *out, git_parse_ctx *ctx, int base);
|
53
|
+
int git_parse_advance_oid(git_oid *out, git_parse_ctx *ctx);
|
54
54
|
|
55
55
|
enum GIT_PARSE_PEEK_FLAGS {
|
56
56
|
GIT_PARSE_PEEK_SKIP_WHITESPACE = (1 << 0)
|
data/vendor/libgit2/src/patch.c
CHANGED
@@ -79,12 +79,12 @@ size_t git_patch_size(
|
|
79
79
|
git_buf file_header = GIT_BUF_INIT;
|
80
80
|
|
81
81
|
if (git_diff_delta__format_file_header(
|
82
|
-
&file_header, patch->delta, NULL, NULL, 0) < 0)
|
83
|
-
|
82
|
+
&file_header, patch->delta, NULL, NULL, 0, true) < 0)
|
83
|
+
git_error_clear();
|
84
84
|
else
|
85
85
|
out += git_buf_len(&file_header);
|
86
86
|
|
87
|
-
|
87
|
+
git_buf_dispose(&file_header);
|
88
88
|
}
|
89
89
|
|
90
90
|
return out;
|
@@ -141,7 +141,7 @@ size_t git_patch_num_hunks(const git_patch *patch)
|
|
141
141
|
|
142
142
|
static int patch_error_outofrange(const char *thing)
|
143
143
|
{
|
144
|
-
|
144
|
+
git_error_set(GIT_ERROR_INVALID, "patch %s index out of range", thing);
|
145
145
|
return GIT_ENOTFOUND;
|
146
146
|
}
|
147
147
|
|
@@ -15,7 +15,7 @@
|
|
15
15
|
#include "diff_xdiff.h"
|
16
16
|
#include "delta.h"
|
17
17
|
#include "zstream.h"
|
18
|
-
#include "
|
18
|
+
#include "futils.h"
|
19
19
|
|
20
20
|
static void diff_output_init(
|
21
21
|
git_patch_generated_output *, const git_diff_options *, git_diff_file_cb,
|
@@ -84,7 +84,7 @@ static int patch_generated_normalize_options(
|
|
84
84
|
const git_diff_options *opts)
|
85
85
|
{
|
86
86
|
if (opts) {
|
87
|
-
|
87
|
+
GIT_ERROR_CHECK_VERSION(opts, GIT_DIFF_OPTIONS_VERSION, "git_diff_options");
|
88
88
|
memcpy(out, opts, sizeof(git_diff_options));
|
89
89
|
} else {
|
90
90
|
git_diff_options default_opts = GIT_DIFF_OPTIONS_INIT;
|
@@ -99,8 +99,8 @@ static int patch_generated_normalize_options(
|
|
99
99
|
git__strdup(opts->new_prefix) :
|
100
100
|
git__strdup(DIFF_NEW_PREFIX_DEFAULT);
|
101
101
|
|
102
|
-
|
103
|
-
|
102
|
+
GIT_ERROR_CHECK_ALLOC(out->old_prefix);
|
103
|
+
GIT_ERROR_CHECK_ALLOC(out->new_prefix);
|
104
104
|
|
105
105
|
return 0;
|
106
106
|
}
|
@@ -135,7 +135,7 @@ static int patch_generated_alloc_from_diff(
|
|
135
135
|
{
|
136
136
|
int error;
|
137
137
|
git_patch_generated *patch = git__calloc(1, sizeof(git_patch_generated));
|
138
|
-
|
138
|
+
GIT_ERROR_CHECK_ALLOC(patch);
|
139
139
|
|
140
140
|
if (!(error = patch_generated_init(patch, diff, delta_index))) {
|
141
141
|
patch->flags |= GIT_PATCH_GENERATED_ALLOCATED;
|
@@ -248,7 +248,7 @@ static int patch_generated_invoke_file_callback(
|
|
248
248
|
if (!output->file_cb)
|
249
249
|
return 0;
|
250
250
|
|
251
|
-
return
|
251
|
+
return git_error_set_after_callback_function(
|
252
252
|
output->file_cb(patch->base.delta, progress, output->payload),
|
253
253
|
"git_patch");
|
254
254
|
}
|
@@ -314,8 +314,8 @@ static int create_binary(
|
|
314
314
|
}
|
315
315
|
|
316
316
|
done:
|
317
|
-
|
318
|
-
|
317
|
+
git_buf_dispose(&deflate);
|
318
|
+
git_buf_dispose(&delta);
|
319
319
|
|
320
320
|
return error;
|
321
321
|
}
|
@@ -350,7 +350,7 @@ static int diff_binary(git_patch_generated_output *output, git_patch_generated *
|
|
350
350
|
return error;
|
351
351
|
}
|
352
352
|
|
353
|
-
error =
|
353
|
+
error = git_error_set_after_callback_function(
|
354
354
|
output->binary_cb(patch->base.delta, &binary, output->payload),
|
355
355
|
"git_patch");
|
356
356
|
|
@@ -397,7 +397,7 @@ static int diff_required(git_diff *diff, const char *action)
|
|
397
397
|
{
|
398
398
|
if (diff)
|
399
399
|
return 0;
|
400
|
-
|
400
|
+
git_error_set(GIT_ERROR_INVALID, "must provide valid diff to %s", action);
|
401
401
|
return -1;
|
402
402
|
}
|
403
403
|
|
@@ -501,12 +501,12 @@ static int patch_generated_with_delta_alloc(
|
|
501
501
|
size_t new_len = *new_path ? strlen(*new_path) : 0;
|
502
502
|
size_t alloc_len;
|
503
503
|
|
504
|
-
|
505
|
-
|
506
|
-
|
504
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, sizeof(*pd), old_len);
|
505
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, new_len);
|
506
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, 2);
|
507
507
|
|
508
508
|
*out = pd = git__calloc(1, alloc_len);
|
509
|
-
|
509
|
+
GIT_ERROR_CHECK_ALLOC(pd);
|
510
510
|
|
511
511
|
pd->patch.flags = GIT_PATCH_GENERATED_ALLOCATED;
|
512
512
|
|
@@ -708,7 +708,7 @@ int git_patch_generated_from_diff(
|
|
708
708
|
|
709
709
|
delta = git_vector_get(&diff->deltas, idx);
|
710
710
|
if (!delta) {
|
711
|
-
|
711
|
+
git_error_set(GIT_ERROR_INVALID, "index out of range for delta in diff");
|
712
712
|
return GIT_ENOTFOUND;
|
713
713
|
}
|
714
714
|
|
@@ -788,7 +788,7 @@ static int patch_generated_binary_cb(
|
|
788
788
|
|
789
789
|
if (binary->old_file.data) {
|
790
790
|
patch->binary.old_file.data = git__malloc(binary->old_file.datalen);
|
791
|
-
|
791
|
+
GIT_ERROR_CHECK_ALLOC(patch->binary.old_file.data);
|
792
792
|
|
793
793
|
memcpy((char *)patch->binary.old_file.data,
|
794
794
|
binary->old_file.data, binary->old_file.datalen);
|
@@ -796,7 +796,7 @@ static int patch_generated_binary_cb(
|
|
796
796
|
|
797
797
|
if (binary->new_file.data) {
|
798
798
|
patch->binary.new_file.data = git__malloc(binary->new_file.datalen);
|
799
|
-
|
799
|
+
GIT_ERROR_CHECK_ALLOC(patch->binary.new_file.data);
|
800
800
|
|
801
801
|
memcpy((char *)patch->binary.new_file.data,
|
802
802
|
binary->new_file.data, binary->new_file.datalen);
|
@@ -816,7 +816,7 @@ static int git_patch_hunk_cb(
|
|
816
816
|
GIT_UNUSED(delta);
|
817
817
|
|
818
818
|
hunk = git_array_alloc(patch->base.hunks);
|
819
|
-
|
819
|
+
GIT_ERROR_CHECK_ALLOC(hunk);
|
820
820
|
|
821
821
|
memcpy(&hunk->hunk, hunk_, sizeof(hunk->hunk));
|
822
822
|
|
@@ -836,7 +836,7 @@ static int patch_generated_line_cb(
|
|
836
836
|
{
|
837
837
|
git_patch_generated *patch = payload;
|
838
838
|
git_patch_hunk *hunk;
|
839
|
-
git_diff_line
|
839
|
+
git_diff_line *line;
|
840
840
|
|
841
841
|
GIT_UNUSED(delta);
|
842
842
|
GIT_UNUSED(hunk_);
|
@@ -845,7 +845,7 @@ static int patch_generated_line_cb(
|
|
845
845
|
assert(hunk); /* programmer error if no hunk is available */
|
846
846
|
|
847
847
|
line = git_array_alloc(patch->base.lines);
|
848
|
-
|
848
|
+
GIT_ERROR_CHECK_ALLOC(line);
|
849
849
|
|
850
850
|
memcpy(line, line_, sizeof(*line));
|
851
851
|
|
@@ -33,7 +33,19 @@ typedef struct {
|
|
33
33
|
char *old_prefix, *new_prefix;
|
34
34
|
} git_patch_parsed;
|
35
35
|
|
36
|
-
static int
|
36
|
+
static int git_parse_err(const char *fmt, ...) GIT_FORMAT_PRINTF(1, 2);
|
37
|
+
static int git_parse_err(const char *fmt, ...)
|
38
|
+
{
|
39
|
+
va_list ap;
|
40
|
+
|
41
|
+
va_start(ap, fmt);
|
42
|
+
git_error_vset(GIT_ERROR_PATCH, fmt, ap);
|
43
|
+
va_end(ap);
|
44
|
+
|
45
|
+
return -1;
|
46
|
+
}
|
47
|
+
|
48
|
+
static size_t header_path_len(git_patch_parse_ctx *ctx)
|
37
49
|
{
|
38
50
|
bool inquote = 0;
|
39
51
|
bool quoted = git_parse_ctx_contains_s(&ctx->parse_ctx, "\"");
|
@@ -58,31 +70,36 @@ static int parse_header_path_buf(git_buf *path, git_patch_parse_ctx *ctx, size_t
|
|
58
70
|
int error;
|
59
71
|
|
60
72
|
if ((error = git_buf_put(path, ctx->parse_ctx.line, path_len)) < 0)
|
61
|
-
|
73
|
+
return error;
|
62
74
|
|
63
75
|
git_parse_advance_chars(&ctx->parse_ctx, path_len);
|
64
76
|
|
65
77
|
git_buf_rtrim(path);
|
66
78
|
|
67
|
-
if (path->size > 0 && path->ptr[0] == '"'
|
68
|
-
|
69
|
-
|
70
|
-
if (error < 0)
|
71
|
-
goto done;
|
79
|
+
if (path->size > 0 && path->ptr[0] == '"' &&
|
80
|
+
(error = git_buf_unquote(path)) < 0)
|
81
|
+
return error;
|
72
82
|
|
73
83
|
git_path_squash_slashes(path);
|
74
84
|
|
75
|
-
|
76
|
-
|
85
|
+
if (!path->size)
|
86
|
+
return git_parse_err("patch contains empty path at line %"PRIuZ,
|
87
|
+
ctx->parse_ctx.line_num);
|
88
|
+
|
89
|
+
return 0;
|
77
90
|
}
|
78
91
|
|
79
92
|
static int parse_header_path(char **out, git_patch_parse_ctx *ctx)
|
80
93
|
{
|
81
94
|
git_buf path = GIT_BUF_INIT;
|
82
|
-
int error
|
95
|
+
int error;
|
83
96
|
|
97
|
+
if ((error = parse_header_path_buf(&path, ctx, header_path_len(ctx))) < 0)
|
98
|
+
goto out;
|
84
99
|
*out = git_buf_detach(&path);
|
85
100
|
|
101
|
+
out:
|
102
|
+
git_buf_dispose(&path);
|
86
103
|
return error;
|
87
104
|
}
|
88
105
|
|
@@ -92,13 +109,19 @@ static int parse_header_git_oldpath(
|
|
92
109
|
git_buf old_path = GIT_BUF_INIT;
|
93
110
|
int error;
|
94
111
|
|
112
|
+
if (patch->old_path) {
|
113
|
+
error = git_parse_err("patch contains duplicate old path at line %"PRIuZ,
|
114
|
+
ctx->parse_ctx.line_num);
|
115
|
+
goto out;
|
116
|
+
}
|
117
|
+
|
95
118
|
if ((error = parse_header_path_buf(&old_path, ctx, ctx->parse_ctx.line_len - 1)) < 0)
|
96
119
|
goto out;
|
97
120
|
|
98
121
|
patch->old_path = git_buf_detach(&old_path);
|
99
122
|
|
100
123
|
out:
|
101
|
-
|
124
|
+
git_buf_dispose(&old_path);
|
102
125
|
return error;
|
103
126
|
}
|
104
127
|
|
@@ -108,13 +131,18 @@ static int parse_header_git_newpath(
|
|
108
131
|
git_buf new_path = GIT_BUF_INIT;
|
109
132
|
int error;
|
110
133
|
|
111
|
-
if (
|
134
|
+
if (patch->new_path) {
|
135
|
+
error = git_parse_err("patch contains duplicate new path at line %"PRIuZ,
|
136
|
+
ctx->parse_ctx.line_num);
|
112
137
|
goto out;
|
138
|
+
}
|
113
139
|
|
140
|
+
if ((error = parse_header_path_buf(&new_path, ctx, ctx->parse_ctx.line_len - 1)) < 0)
|
141
|
+
goto out;
|
114
142
|
patch->new_path = git_buf_detach(&new_path);
|
115
143
|
|
116
144
|
out:
|
117
|
-
|
145
|
+
git_buf_dispose(&new_path);
|
118
146
|
return error;
|
119
147
|
}
|
120
148
|
|
@@ -203,9 +231,9 @@ static int parse_header_git_deletedfilemode(
|
|
203
231
|
git_patch_parsed *patch,
|
204
232
|
git_patch_parse_ctx *ctx)
|
205
233
|
{
|
206
|
-
git__free((char *)patch->base.delta->
|
234
|
+
git__free((char *)patch->base.delta->new_file.path);
|
207
235
|
|
208
|
-
patch->base.delta->
|
236
|
+
patch->base.delta->new_file.path = NULL;
|
209
237
|
patch->base.delta->status = GIT_DELTA_DELETED;
|
210
238
|
patch->base.delta->nfiles = 1;
|
211
239
|
|
@@ -216,9 +244,9 @@ static int parse_header_git_newfilemode(
|
|
216
244
|
git_patch_parsed *patch,
|
217
245
|
git_patch_parse_ctx *ctx)
|
218
246
|
{
|
219
|
-
git__free((char *)patch->base.delta->
|
247
|
+
git__free((char *)patch->base.delta->old_file.path);
|
220
248
|
|
221
|
-
patch->base.delta->
|
249
|
+
patch->base.delta->old_file.path = NULL;
|
222
250
|
patch->base.delta->status = GIT_DELTA_ADDED;
|
223
251
|
patch->base.delta->nfiles = 1;
|
224
252
|
|
@@ -282,7 +310,7 @@ static int parse_header_percent(uint16_t *out, git_patch_parse_ctx *ctx)
|
|
282
310
|
if (val < 0 || val > 100)
|
283
311
|
return -1;
|
284
312
|
|
285
|
-
*out = val;
|
313
|
+
*out = (uint16_t)val;
|
286
314
|
return 0;
|
287
315
|
}
|
288
316
|
|
@@ -328,7 +356,8 @@ static int parse_header_start(git_patch_parsed *patch, git_patch_parse_ctx *ctx)
|
|
328
356
|
* proceeed here. We then hope for the "---" and "+++" lines to fix that
|
329
357
|
* for us.
|
330
358
|
*/
|
331
|
-
if (!git_parse_ctx_contains(&ctx->parse_ctx, "\n", 1)
|
359
|
+
if (!git_parse_ctx_contains(&ctx->parse_ctx, "\n", 1) &&
|
360
|
+
!git_parse_ctx_contains(&ctx->parse_ctx, "\r\n", 2)) {
|
332
361
|
git_parse_advance_chars(&ctx->parse_ctx, ctx->parse_ctx.line_len - 1);
|
333
362
|
|
334
363
|
git__free(patch->header_old_path);
|
@@ -376,6 +405,7 @@ static const parse_header_transition transitions[] = {
|
|
376
405
|
{ "index " , STATE_DIFF, STATE_INDEX, parse_header_git_index },
|
377
406
|
{ "index " , STATE_END, STATE_INDEX, parse_header_git_index },
|
378
407
|
|
408
|
+
{ "--- " , STATE_DIFF, STATE_PATH, parse_header_git_oldpath },
|
379
409
|
{ "--- " , STATE_INDEX, STATE_PATH, parse_header_git_oldpath },
|
380
410
|
{ "+++ " , STATE_PATH, STATE_END, parse_header_git_newpath },
|
381
411
|
{ "GIT binary patch" , STATE_INDEX, STATE_END, NULL },
|
@@ -393,6 +423,7 @@ static const parse_header_transition transitions[] = {
|
|
393
423
|
/* Next patch */
|
394
424
|
{ "diff --git " , STATE_END, 0, NULL },
|
395
425
|
{ "@@ -" , STATE_END, 0, NULL },
|
426
|
+
{ "-- " , STATE_INDEX, 0, NULL },
|
396
427
|
{ "-- " , STATE_END, 0, NULL },
|
397
428
|
};
|
398
429
|
|
@@ -460,7 +491,7 @@ done:
|
|
460
491
|
|
461
492
|
static int parse_int(int *out, git_patch_parse_ctx *ctx)
|
462
493
|
{
|
463
|
-
|
494
|
+
int64_t num;
|
464
495
|
|
465
496
|
if (git_parse_advance_digit(&num, &ctx->parse_ctx, 10) < 0 || !git__is_int(num))
|
466
497
|
return -1;
|
@@ -518,11 +549,19 @@ static int parse_hunk_header(
|
|
518
549
|
return 0;
|
519
550
|
|
520
551
|
fail:
|
521
|
-
|
552
|
+
git_error_set(GIT_ERROR_PATCH, "invalid patch hunk header at line %"PRIuZ,
|
522
553
|
ctx->parse_ctx.line_num);
|
523
554
|
return -1;
|
524
555
|
}
|
525
556
|
|
557
|
+
static int eof_for_origin(int origin) {
|
558
|
+
if (origin == GIT_DIFF_LINE_ADDITION)
|
559
|
+
return GIT_DIFF_LINE_ADD_EOFNL;
|
560
|
+
if (origin == GIT_DIFF_LINE_DELETION)
|
561
|
+
return GIT_DIFF_LINE_DEL_EOFNL;
|
562
|
+
return GIT_DIFF_LINE_CONTEXT_EOFNL;
|
563
|
+
}
|
564
|
+
|
526
565
|
static int parse_hunk_body(
|
527
566
|
git_patch_parsed *patch,
|
528
567
|
git_patch_hunk *hunk,
|
@@ -533,6 +572,7 @@ static int parse_hunk_body(
|
|
533
572
|
|
534
573
|
int oldlines = hunk->hunk.old_lines;
|
535
574
|
int newlines = hunk->hunk.new_lines;
|
575
|
+
int last_origin = 0;
|
536
576
|
|
537
577
|
for (;
|
538
578
|
ctx->parse_ctx.remain_len > 1 &&
|
@@ -540,11 +580,17 @@ static int parse_hunk_body(
|
|
540
580
|
!git_parse_ctx_contains_s(&ctx->parse_ctx, "@@ -");
|
541
581
|
git_parse_advance_line(&ctx->parse_ctx)) {
|
542
582
|
|
583
|
+
int old_lineno, new_lineno, origin, prefix = 1;
|
543
584
|
char c;
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
585
|
+
|
586
|
+
if (git__add_int_overflow(&old_lineno, hunk->hunk.old_start, hunk->hunk.old_lines) ||
|
587
|
+
git__sub_int_overflow(&old_lineno, old_lineno, oldlines) ||
|
588
|
+
git__add_int_overflow(&new_lineno, hunk->hunk.new_start, hunk->hunk.new_lines) ||
|
589
|
+
git__sub_int_overflow(&new_lineno, new_lineno, newlines)) {
|
590
|
+
error = git_parse_err("unrepresentable line count at line %"PRIuZ,
|
591
|
+
ctx->parse_ctx.line_num);
|
592
|
+
goto done;
|
593
|
+
}
|
548
594
|
|
549
595
|
if (ctx->parse_ctx.line_len == 0 || ctx->parse_ctx.line[ctx->parse_ctx.line_len - 1] != '\n') {
|
550
596
|
error = git_parse_err("invalid patch instruction at line %"PRIuZ,
|
@@ -577,18 +623,34 @@ static int parse_hunk_body(
|
|
577
623
|
old_lineno = -1;
|
578
624
|
break;
|
579
625
|
|
626
|
+
case '\\':
|
627
|
+
/*
|
628
|
+
* If there are no oldlines left, then this is probably
|
629
|
+
* the "" marker. Do not
|
630
|
+
* verify its format, as it may be localized.
|
631
|
+
*/
|
632
|
+
if (!oldlines) {
|
633
|
+
prefix = 0;
|
634
|
+
origin = eof_for_origin(last_origin);
|
635
|
+
old_lineno = -1;
|
636
|
+
new_lineno = -1;
|
637
|
+
break;
|
638
|
+
}
|
639
|
+
/* fall through */
|
640
|
+
|
580
641
|
default:
|
581
642
|
error = git_parse_err("invalid patch hunk at line %"PRIuZ, ctx->parse_ctx.line_num);
|
582
643
|
goto done;
|
583
644
|
}
|
584
645
|
|
585
646
|
line = git_array_alloc(patch->base.lines);
|
586
|
-
|
647
|
+
GIT_ERROR_CHECK_ALLOC(line);
|
587
648
|
|
588
649
|
memset(line, 0x0, sizeof(git_diff_line));
|
589
650
|
|
590
|
-
line->content = ctx->parse_ctx.line + prefix;
|
591
651
|
line->content_len = ctx->parse_ctx.line_len - prefix;
|
652
|
+
line->content = git__strndup(ctx->parse_ctx.line + prefix, line->content_len);
|
653
|
+
GIT_ERROR_CHECK_ALLOC(line->content);
|
592
654
|
line->content_offset = ctx->parse_ctx.content_len - ctx->parse_ctx.remain_len;
|
593
655
|
line->origin = origin;
|
594
656
|
line->num_lines = 1;
|
@@ -596,6 +658,8 @@ static int parse_hunk_body(
|
|
596
658
|
line->new_lineno = new_lineno;
|
597
659
|
|
598
660
|
hunk->line_count++;
|
661
|
+
|
662
|
+
last_origin = origin;
|
599
663
|
}
|
600
664
|
|
601
665
|
if (oldlines || newlines) {
|
@@ -605,7 +669,8 @@ static int parse_hunk_body(
|
|
605
669
|
goto done;
|
606
670
|
}
|
607
671
|
|
608
|
-
/*
|
672
|
+
/*
|
673
|
+
* Handle "". Only expect the leading
|
609
674
|
* backslash, though, because the rest of the string could be
|
610
675
|
* localized. Because `diff` optimizes for the case where you
|
611
676
|
* want to apply the patch by hand.
|
@@ -616,11 +681,25 @@ static int parse_hunk_body(
|
|
616
681
|
line = git_array_get(patch->base.lines, git_array_size(patch->base.lines) - 1);
|
617
682
|
|
618
683
|
if (line->content_len < 1) {
|
619
|
-
error = git_parse_err("
|
684
|
+
error = git_parse_err("last line has no trailing newline");
|
620
685
|
goto done;
|
621
686
|
}
|
622
687
|
|
623
|
-
line->
|
688
|
+
line = git_array_alloc(patch->base.lines);
|
689
|
+
GIT_ERROR_CHECK_ALLOC(line);
|
690
|
+
|
691
|
+
memset(line, 0x0, sizeof(git_diff_line));
|
692
|
+
|
693
|
+
line->content_len = ctx->parse_ctx.line_len;
|
694
|
+
line->content = git__strndup(ctx->parse_ctx.line, line->content_len);
|
695
|
+
GIT_ERROR_CHECK_ALLOC(line->content);
|
696
|
+
line->content_offset = ctx->parse_ctx.content_len - ctx->parse_ctx.remain_len;
|
697
|
+
line->origin = eof_for_origin(last_origin);
|
698
|
+
line->num_lines = 1;
|
699
|
+
line->old_lineno = -1;
|
700
|
+
line->new_lineno = -1;
|
701
|
+
|
702
|
+
hunk->line_count++;
|
624
703
|
|
625
704
|
git_parse_advance_line(&ctx->parse_ctx);
|
626
705
|
}
|
@@ -650,7 +729,7 @@ static int parse_patch_header(
|
|
650
729
|
* noise, continue.
|
651
730
|
*/
|
652
731
|
if (parse_hunk_header(&hunk, ctx) < 0) {
|
653
|
-
|
732
|
+
git_error_clear();
|
654
733
|
continue;
|
655
734
|
}
|
656
735
|
|
@@ -673,7 +752,7 @@ static int parse_patch_header(
|
|
673
752
|
continue;
|
674
753
|
}
|
675
754
|
|
676
|
-
|
755
|
+
git_error_set(GIT_ERROR_PATCH, "no patch found");
|
677
756
|
error = GIT_ENOTFOUND;
|
678
757
|
|
679
758
|
done:
|
@@ -686,7 +765,7 @@ static int parse_patch_binary_side(
|
|
686
765
|
{
|
687
766
|
git_diff_binary_t type = GIT_DIFF_BINARY_NONE;
|
688
767
|
git_buf base85 = GIT_BUF_INIT, decoded = GIT_BUF_INIT;
|
689
|
-
|
768
|
+
int64_t len;
|
690
769
|
int error = 0;
|
691
770
|
|
692
771
|
if (git_parse_ctx_contains_s(&ctx->parse_ctx, "literal ")) {
|
@@ -729,7 +808,7 @@ static int parse_patch_binary_side(
|
|
729
808
|
|
730
809
|
encoded_len = ((decoded_len / 4) + !!(decoded_len % 4)) * 5;
|
731
810
|
|
732
|
-
if (encoded_len > ctx->parse_ctx.line_len - 1) {
|
811
|
+
if (!encoded_len || !ctx->parse_ctx.line_len || encoded_len > ctx->parse_ctx.line_len - 1) {
|
733
812
|
error = git_parse_err("truncated binary data at line %"PRIuZ, ctx->parse_ctx.line_num);
|
734
813
|
goto done;
|
735
814
|
}
|
@@ -757,8 +836,8 @@ static int parse_patch_binary_side(
|
|
757
836
|
binary->data = git_buf_detach(&decoded);
|
758
837
|
|
759
838
|
done:
|
760
|
-
|
761
|
-
|
839
|
+
git_buf_dispose(&base85);
|
840
|
+
git_buf_dispose(&decoded);
|
762
841
|
return error;
|
763
842
|
}
|
764
843
|
|
@@ -799,12 +878,23 @@ static int parse_patch_binary_nodata(
|
|
799
878
|
git_patch_parsed *patch,
|
800
879
|
git_patch_parse_ctx *ctx)
|
801
880
|
{
|
881
|
+
const char *old = patch->old_path ? patch->old_path : patch->header_old_path;
|
882
|
+
const char *new = patch->new_path ? patch->new_path : patch->header_new_path;
|
883
|
+
|
884
|
+
if (!old || !new)
|
885
|
+
return git_parse_err("corrupt binary data without paths at line %"PRIuZ, ctx->parse_ctx.line_num);
|
886
|
+
|
887
|
+
if (patch->base.delta->status == GIT_DELTA_ADDED)
|
888
|
+
old = "/dev/null";
|
889
|
+
else if (patch->base.delta->status == GIT_DELTA_DELETED)
|
890
|
+
new = "/dev/null";
|
891
|
+
|
802
892
|
if (git_parse_advance_expected_str(&ctx->parse_ctx, "Binary files ") < 0 ||
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
893
|
+
git_parse_advance_expected_str(&ctx->parse_ctx, old) < 0 ||
|
894
|
+
git_parse_advance_expected_str(&ctx->parse_ctx, " and ") < 0 ||
|
895
|
+
git_parse_advance_expected_str(&ctx->parse_ctx, new) < 0 ||
|
896
|
+
git_parse_advance_expected_str(&ctx->parse_ctx, " differ") < 0 ||
|
897
|
+
git_parse_advance_nl(&ctx->parse_ctx) < 0)
|
808
898
|
return git_parse_err("corrupt git binary header at line %"PRIuZ, ctx->parse_ctx.line_num);
|
809
899
|
|
810
900
|
patch->base.binary.contains_data = 0;
|
@@ -821,7 +911,7 @@ static int parse_patch_hunks(
|
|
821
911
|
|
822
912
|
while (git_parse_ctx_contains_s(&ctx->parse_ctx, "@@ -")) {
|
823
913
|
hunk = git_array_alloc(patch->base.hunks);
|
824
|
-
|
914
|
+
GIT_ERROR_CHECK_ALLOC(hunk);
|
825
915
|
|
826
916
|
memset(hunk, 0, sizeof(git_patch_hunk));
|
827
917
|
|
@@ -921,21 +1011,15 @@ static int check_filenames(git_patch_parsed *patch)
|
|
921
1011
|
return git_parse_err("missing old path");
|
922
1012
|
|
923
1013
|
/* Ensure (non-renamed) paths match */
|
924
|
-
if (check_header_names(
|
925
|
-
|
926
|
-
check_header_names(
|
927
|
-
patch->header_new_path, patch->new_path, "new", deleted) < 0)
|
1014
|
+
if (check_header_names(patch->header_old_path, patch->old_path, "old", added) < 0 ||
|
1015
|
+
check_header_names(patch->header_new_path, patch->new_path, "new", deleted) < 0)
|
928
1016
|
return -1;
|
929
1017
|
|
930
|
-
prefixed_old = (!added && patch->old_path) ? patch->old_path :
|
931
|
-
|
932
|
-
prefixed_new = (!deleted && patch->new_path) ? patch->new_path :
|
933
|
-
patch->header_new_path;
|
1018
|
+
prefixed_old = (!added && patch->old_path) ? patch->old_path : patch->header_old_path;
|
1019
|
+
prefixed_new = (!deleted && patch->new_path) ? patch->new_path : patch->header_new_path;
|
934
1020
|
|
935
|
-
if (check_prefix(
|
936
|
-
|
937
|
-
check_prefix(
|
938
|
-
&patch->new_prefix, &new_prefixlen, patch, prefixed_new) < 0)
|
1021
|
+
if ((prefixed_old && check_prefix(&patch->old_prefix, &old_prefixlen, patch, prefixed_old) < 0) ||
|
1022
|
+
(prefixed_new && check_prefix(&patch->new_prefix, &new_prefixlen, patch, prefixed_new) < 0))
|
939
1023
|
return -1;
|
940
1024
|
|
941
1025
|
/* Prefer the rename filenames as they are unambiguous and unprefixed */
|
@@ -950,7 +1034,7 @@ static int check_filenames(git_patch_parsed *patch)
|
|
950
1034
|
patch->base.delta->new_file.path = prefixed_new + new_prefixlen;
|
951
1035
|
|
952
1036
|
if (!patch->base.delta->old_file.path &&
|
953
|
-
|
1037
|
+
!patch->base.delta->new_file.path)
|
954
1038
|
return git_parse_err("git diff header lacks old / new paths");
|
955
1039
|
|
956
1040
|
return 0;
|
@@ -964,14 +1048,14 @@ static int check_patch(git_patch_parsed *patch)
|
|
964
1048
|
return -1;
|
965
1049
|
|
966
1050
|
if (delta->old_file.path &&
|
967
|
-
|
968
|
-
|
1051
|
+
delta->status != GIT_DELTA_DELETED &&
|
1052
|
+
!delta->new_file.mode)
|
969
1053
|
delta->new_file.mode = delta->old_file.mode;
|
970
1054
|
|
971
1055
|
if (delta->status == GIT_DELTA_MODIFIED &&
|
972
|
-
|
973
|
-
|
974
|
-
|
1056
|
+
!(delta->flags & GIT_DIFF_FLAG_BINARY) &&
|
1057
|
+
delta->new_file.mode == delta->old_file.mode &&
|
1058
|
+
git_array_size(patch->base.hunks) == 0)
|
975
1059
|
return git_parse_err("patch with no hunks");
|
976
1060
|
|
977
1061
|
if (delta->status == GIT_DELTA_ADDED) {
|
@@ -1043,6 +1127,8 @@ int git_patch_parsed_from_diff(git_patch **out, git_diff *d, size_t idx)
|
|
1043
1127
|
static void patch_parsed__free(git_patch *p)
|
1044
1128
|
{
|
1045
1129
|
git_patch_parsed *patch = (git_patch_parsed *)p;
|
1130
|
+
git_diff_line *line;
|
1131
|
+
size_t i;
|
1046
1132
|
|
1047
1133
|
if (!patch)
|
1048
1134
|
return;
|
@@ -1052,6 +1138,8 @@ static void patch_parsed__free(git_patch *p)
|
|
1052
1138
|
git__free((char *)patch->base.binary.old_file.data);
|
1053
1139
|
git__free((char *)patch->base.binary.new_file.data);
|
1054
1140
|
git_array_clear(patch->base.hunks);
|
1141
|
+
git_array_foreach(patch->base.lines, i, line)
|
1142
|
+
git__free((char *) line->content);
|
1055
1143
|
git_array_clear(patch->base.lines);
|
1056
1144
|
git__free(patch->base.delta);
|
1057
1145
|
|
@@ -1079,7 +1167,7 @@ int git_patch_parse(
|
|
1079
1167
|
*out = NULL;
|
1080
1168
|
|
1081
1169
|
patch = git__calloc(1, sizeof(git_patch_parsed));
|
1082
|
-
|
1170
|
+
GIT_ERROR_CHECK_ALLOC(patch);
|
1083
1171
|
|
1084
1172
|
patch->ctx = ctx;
|
1085
1173
|
GIT_REFCOUNT_INC(patch->ctx);
|
@@ -1087,7 +1175,7 @@ int git_patch_parse(
|
|
1087
1175
|
patch->base.free_fn = patch_parsed__free;
|
1088
1176
|
|
1089
1177
|
patch->base.delta = git__calloc(1, sizeof(git_diff_delta));
|
1090
|
-
|
1178
|
+
GIT_ERROR_CHECK_ALLOC(patch->base.delta);
|
1091
1179
|
|
1092
1180
|
patch->base.delta->status = GIT_DELTA_MODIFIED;
|
1093
1181
|
patch->base.delta->nfiles = 2;
|
@@ -1126,7 +1214,7 @@ int git_patch_from_buffer(
|
|
1126
1214
|
int error;
|
1127
1215
|
|
1128
1216
|
ctx = git_patch_parse_ctx_init(content, content_len, opts);
|
1129
|
-
|
1217
|
+
GIT_ERROR_CHECK_ALLOC(ctx);
|
1130
1218
|
|
1131
1219
|
error = git_patch_parse(out, ctx);
|
1132
1220
|
|