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
|
@@ -30,7 +30,7 @@ typedef struct {
|
|
|
30
30
|
const char *name;
|
|
31
31
|
void *payload;
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
git_reference_t ref_type;
|
|
34
34
|
union {
|
|
35
35
|
git_oid id;
|
|
36
36
|
char *symbolic;
|
|
@@ -60,7 +60,7 @@ int git_transaction_config_new(git_transaction **out, git_config *cfg)
|
|
|
60
60
|
assert(out && cfg);
|
|
61
61
|
|
|
62
62
|
tx = git__calloc(1, sizeof(git_transaction));
|
|
63
|
-
|
|
63
|
+
GIT_ERROR_CHECK_ALLOC(tx);
|
|
64
64
|
|
|
65
65
|
tx->type = TRANSACTION_CONFIG;
|
|
66
66
|
tx->cfg = cfg;
|
|
@@ -84,7 +84,7 @@ int git_transaction_new(git_transaction **out, git_repository *repo)
|
|
|
84
84
|
goto on_error;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
if ((error =
|
|
87
|
+
if ((error = git_strmap_new(&tx->locks)) < 0) {
|
|
88
88
|
error = -1;
|
|
89
89
|
goto on_error;
|
|
90
90
|
}
|
|
@@ -111,16 +111,15 @@ int git_transaction_lock_ref(git_transaction *tx, const char *refname)
|
|
|
111
111
|
assert(tx && refname);
|
|
112
112
|
|
|
113
113
|
node = git_pool_mallocz(&tx->pool, sizeof(transaction_node));
|
|
114
|
-
|
|
114
|
+
GIT_ERROR_CHECK_ALLOC(node);
|
|
115
115
|
|
|
116
116
|
node->name = git_pool_strdup(&tx->pool, refname);
|
|
117
|
-
|
|
117
|
+
GIT_ERROR_CHECK_ALLOC(node->name);
|
|
118
118
|
|
|
119
119
|
if ((error = git_refdb_lock(&node->payload, tx->db, refname)) < 0)
|
|
120
120
|
return error;
|
|
121
121
|
|
|
122
|
-
|
|
123
|
-
if (error < 0)
|
|
122
|
+
if ((error = git_strmap_set(tx->locks, node->name, node)) < 0)
|
|
124
123
|
goto cleanup;
|
|
125
124
|
|
|
126
125
|
return 0;
|
|
@@ -133,17 +132,13 @@ cleanup:
|
|
|
133
132
|
|
|
134
133
|
static int find_locked(transaction_node **out, git_transaction *tx, const char *refname)
|
|
135
134
|
{
|
|
136
|
-
git_strmap_iter pos;
|
|
137
135
|
transaction_node *node;
|
|
138
136
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
giterr_set(GITERR_REFERENCE, "the specified reference is not locked");
|
|
137
|
+
if ((node = git_strmap_get(tx->locks, refname)) == NULL) {
|
|
138
|
+
git_error_set(GIT_ERROR_REFERENCE, "the specified reference is not locked");
|
|
142
139
|
return GIT_ENOTFOUND;
|
|
143
140
|
}
|
|
144
141
|
|
|
145
|
-
node = git_strmap_value_at(tx->locks, pos);
|
|
146
|
-
|
|
147
142
|
*out = node;
|
|
148
143
|
return 0;
|
|
149
144
|
}
|
|
@@ -169,7 +164,7 @@ static int copy_common(transaction_node *node, git_transaction *tx, const git_si
|
|
|
169
164
|
|
|
170
165
|
if (msg) {
|
|
171
166
|
node->message = git_pool_strdup(&tx->pool, msg);
|
|
172
|
-
|
|
167
|
+
GIT_ERROR_CHECK_ALLOC(node->message);
|
|
173
168
|
}
|
|
174
169
|
|
|
175
170
|
return 0;
|
|
@@ -189,7 +184,7 @@ int git_transaction_set_target(git_transaction *tx, const char *refname, const g
|
|
|
189
184
|
return error;
|
|
190
185
|
|
|
191
186
|
git_oid_cpy(&node->target.id, target);
|
|
192
|
-
node->ref_type =
|
|
187
|
+
node->ref_type = GIT_REFERENCE_DIRECT;
|
|
193
188
|
|
|
194
189
|
return 0;
|
|
195
190
|
}
|
|
@@ -208,8 +203,8 @@ int git_transaction_set_symbolic_target(git_transaction *tx, const char *refname
|
|
|
208
203
|
return error;
|
|
209
204
|
|
|
210
205
|
node->target.symbolic = git_pool_strdup(&tx->pool, target);
|
|
211
|
-
|
|
212
|
-
node->ref_type =
|
|
206
|
+
GIT_ERROR_CHECK_ALLOC(node->target.symbolic);
|
|
207
|
+
node->ref_type = GIT_REFERENCE_SYMBOLIC;
|
|
213
208
|
|
|
214
209
|
return 0;
|
|
215
210
|
}
|
|
@@ -223,7 +218,7 @@ int git_transaction_remove(git_transaction *tx, const char *refname)
|
|
|
223
218
|
return error;
|
|
224
219
|
|
|
225
220
|
node->remove = true;
|
|
226
|
-
node->ref_type =
|
|
221
|
+
node->ref_type = GIT_REFERENCE_DIRECT; /* the id will be ignored */
|
|
227
222
|
|
|
228
223
|
return 0;
|
|
229
224
|
}
|
|
@@ -235,18 +230,18 @@ static int dup_reflog(git_reflog **out, const git_reflog *in, git_pool *pool)
|
|
|
235
230
|
size_t len, i;
|
|
236
231
|
|
|
237
232
|
reflog = git_pool_mallocz(pool, sizeof(git_reflog));
|
|
238
|
-
|
|
233
|
+
GIT_ERROR_CHECK_ALLOC(reflog);
|
|
239
234
|
|
|
240
235
|
reflog->ref_name = git_pool_strdup(pool, in->ref_name);
|
|
241
|
-
|
|
236
|
+
GIT_ERROR_CHECK_ALLOC(reflog->ref_name);
|
|
242
237
|
|
|
243
238
|
len = in->entries.length;
|
|
244
239
|
reflog->entries.length = len;
|
|
245
240
|
reflog->entries.contents = git_pool_mallocz(pool, len * sizeof(void *));
|
|
246
|
-
|
|
241
|
+
GIT_ERROR_CHECK_ALLOC(reflog->entries.contents);
|
|
247
242
|
|
|
248
243
|
entries = git_pool_mallocz(pool, len * sizeof(git_reflog_entry));
|
|
249
|
-
|
|
244
|
+
GIT_ERROR_CHECK_ALLOC(entries);
|
|
250
245
|
|
|
251
246
|
for (i = 0; i < len; i++) {
|
|
252
247
|
const git_reflog_entry *src;
|
|
@@ -260,7 +255,7 @@ static int dup_reflog(git_reflog **out, const git_reflog *in, git_pool *pool)
|
|
|
260
255
|
git_oid_cpy(&tgt->oid_cur, &src->oid_cur);
|
|
261
256
|
|
|
262
257
|
tgt->msg = git_pool_strdup(pool, src->msg);
|
|
263
|
-
|
|
258
|
+
GIT_ERROR_CHECK_ALLOC(tgt->msg);
|
|
264
259
|
|
|
265
260
|
if (git_signature__pdup(&tgt->committer, src->committer, pool) < 0)
|
|
266
261
|
return -1;
|
|
@@ -292,22 +287,22 @@ static int update_target(git_refdb *db, transaction_node *node)
|
|
|
292
287
|
git_reference *ref;
|
|
293
288
|
int error, update_reflog;
|
|
294
289
|
|
|
295
|
-
if (node->ref_type ==
|
|
290
|
+
if (node->ref_type == GIT_REFERENCE_DIRECT) {
|
|
296
291
|
ref = git_reference__alloc(node->name, &node->target.id, NULL);
|
|
297
|
-
} else if (node->ref_type ==
|
|
292
|
+
} else if (node->ref_type == GIT_REFERENCE_SYMBOLIC) {
|
|
298
293
|
ref = git_reference__alloc_symbolic(node->name, node->target.symbolic);
|
|
299
294
|
} else {
|
|
300
295
|
abort();
|
|
301
296
|
}
|
|
302
297
|
|
|
303
|
-
|
|
298
|
+
GIT_ERROR_CHECK_ALLOC(ref);
|
|
304
299
|
update_reflog = node->reflog == NULL;
|
|
305
300
|
|
|
306
301
|
if (node->remove) {
|
|
307
302
|
error = git_refdb_unlock(db, node->payload, 2, false, ref, NULL, NULL);
|
|
308
|
-
} else if (node->ref_type ==
|
|
303
|
+
} else if (node->ref_type == GIT_REFERENCE_DIRECT) {
|
|
309
304
|
error = git_refdb_unlock(db, node->payload, true, update_reflog, ref, node->sig, node->message);
|
|
310
|
-
} else if (node->ref_type ==
|
|
305
|
+
} else if (node->ref_type == GIT_REFERENCE_SYMBOLIC) {
|
|
311
306
|
error = git_refdb_unlock(db, node->payload, true, update_reflog, ref, node->sig, node->message);
|
|
312
307
|
} else {
|
|
313
308
|
abort();
|
|
@@ -339,7 +334,13 @@ int git_transaction_commit(git_transaction *tx)
|
|
|
339
334
|
return error;
|
|
340
335
|
}
|
|
341
336
|
|
|
342
|
-
if (node->ref_type
|
|
337
|
+
if (node->ref_type == GIT_REFERENCE_INVALID) {
|
|
338
|
+
/* ref was locked but not modified */
|
|
339
|
+
if ((error = git_refdb_unlock(tx->db, node->payload, false, false, NULL, NULL, NULL)) < 0) {
|
|
340
|
+
return error;
|
|
341
|
+
}
|
|
342
|
+
node->committed = true;
|
|
343
|
+
} else {
|
|
343
344
|
if ((error = update_target(tx->db, node)) < 0)
|
|
344
345
|
return error;
|
|
345
346
|
}
|
|
@@ -123,7 +123,7 @@ int git_transport_new(git_transport **out, git_remote *owner, const char *url)
|
|
|
123
123
|
int error;
|
|
124
124
|
|
|
125
125
|
if ((error = transport_find_fn(&fn, url, ¶m)) == GIT_ENOTFOUND) {
|
|
126
|
-
|
|
126
|
+
git_error_set(GIT_ERROR_NET, "unsupported URL protocol");
|
|
127
127
|
return -1;
|
|
128
128
|
} else if (error < 0)
|
|
129
129
|
return error;
|
|
@@ -131,7 +131,7 @@ int git_transport_new(git_transport **out, git_remote *owner, const char *url)
|
|
|
131
131
|
if ((error = fn(&transport, owner, param)) < 0)
|
|
132
132
|
return error;
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
GIT_ERROR_CHECK_VERSION(transport, GIT_TRANSPORT_VERSION, "git_transport");
|
|
135
135
|
|
|
136
136
|
*out = transport;
|
|
137
137
|
|
|
@@ -162,7 +162,7 @@ int git_transport_register(
|
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
definition = git__calloc(1, sizeof(transport_definition));
|
|
165
|
-
|
|
165
|
+
GIT_ERROR_CHECK_ALLOC(definition);
|
|
166
166
|
|
|
167
167
|
definition->prefix = git_buf_detach(&prefix);
|
|
168
168
|
definition->fn = cb;
|
|
@@ -9,9 +9,12 @@
|
|
|
9
9
|
|
|
10
10
|
#include "git2.h"
|
|
11
11
|
#include "buffer.h"
|
|
12
|
+
#include "git2/sys/cred.h"
|
|
12
13
|
|
|
13
14
|
static int basic_next_token(
|
|
14
|
-
git_buf *out,
|
|
15
|
+
git_buf *out,
|
|
16
|
+
git_http_auth_context *ctx,
|
|
17
|
+
git_cred *c)
|
|
15
18
|
{
|
|
16
19
|
git_cred_userpass_plaintext *cred;
|
|
17
20
|
git_buf raw = GIT_BUF_INIT;
|
|
@@ -20,7 +23,7 @@ static int basic_next_token(
|
|
|
20
23
|
GIT_UNUSED(ctx);
|
|
21
24
|
|
|
22
25
|
if (c->credtype != GIT_CREDTYPE_USERPASS_PLAINTEXT) {
|
|
23
|
-
|
|
26
|
+
git_error_set(GIT_ERROR_INVALID, "invalid credential type for basic auth");
|
|
24
27
|
goto on_error;
|
|
25
28
|
}
|
|
26
29
|
|
|
@@ -29,9 +32,8 @@ static int basic_next_token(
|
|
|
29
32
|
git_buf_printf(&raw, "%s:%s", cred->username, cred->password);
|
|
30
33
|
|
|
31
34
|
if (git_buf_oom(&raw) ||
|
|
32
|
-
git_buf_puts(out, "
|
|
33
|
-
git_buf_encode_base64(out, git_buf_cstr(&raw), raw.size) < 0
|
|
34
|
-
git_buf_puts(out, "\r\n") < 0)
|
|
35
|
+
git_buf_puts(out, "Basic ") < 0 ||
|
|
36
|
+
git_buf_encode_base64(out, git_buf_cstr(&raw), raw.size) < 0)
|
|
35
37
|
goto on_error;
|
|
36
38
|
|
|
37
39
|
error = 0;
|
|
@@ -47,26 +49,28 @@ on_error:
|
|
|
47
49
|
static git_http_auth_context basic_context = {
|
|
48
50
|
GIT_AUTHTYPE_BASIC,
|
|
49
51
|
GIT_CREDTYPE_USERPASS_PLAINTEXT,
|
|
52
|
+
0,
|
|
50
53
|
NULL,
|
|
51
54
|
basic_next_token,
|
|
55
|
+
NULL,
|
|
52
56
|
NULL
|
|
53
57
|
};
|
|
54
58
|
|
|
55
59
|
int git_http_auth_basic(
|
|
56
|
-
git_http_auth_context **out, const
|
|
60
|
+
git_http_auth_context **out, const git_net_url *url)
|
|
57
61
|
{
|
|
58
|
-
GIT_UNUSED(
|
|
62
|
+
GIT_UNUSED(url);
|
|
59
63
|
|
|
60
64
|
*out = &basic_context;
|
|
61
65
|
return 0;
|
|
62
66
|
}
|
|
63
67
|
|
|
64
68
|
int git_http_auth_dummy(
|
|
65
|
-
git_http_auth_context **out, const
|
|
69
|
+
git_http_auth_context **out, const git_net_url *url)
|
|
66
70
|
{
|
|
67
|
-
GIT_UNUSED(
|
|
71
|
+
GIT_UNUSED(url);
|
|
68
72
|
|
|
69
73
|
*out = NULL;
|
|
70
|
-
return
|
|
74
|
+
return GIT_PASSTHROUGH;
|
|
71
75
|
}
|
|
72
76
|
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
typedef enum {
|
|
17
17
|
GIT_AUTHTYPE_BASIC = 1,
|
|
18
18
|
GIT_AUTHTYPE_NEGOTIATE = 2,
|
|
19
|
+
GIT_AUTHTYPE_NTLM = 4,
|
|
19
20
|
} git_http_authtype_t;
|
|
20
21
|
|
|
21
22
|
typedef struct git_http_auth_context git_http_auth_context;
|
|
@@ -27,12 +28,18 @@ struct git_http_auth_context {
|
|
|
27
28
|
/** Supported credentials */
|
|
28
29
|
git_credtype_t credtypes;
|
|
29
30
|
|
|
31
|
+
/** Connection affinity or request affinity */
|
|
32
|
+
unsigned connection_affinity : 1;
|
|
33
|
+
|
|
30
34
|
/** Sets the challenge on the authentication context */
|
|
31
35
|
int (*set_challenge)(git_http_auth_context *ctx, const char *challenge);
|
|
32
36
|
|
|
33
37
|
/** Gets the next authentication token from the context */
|
|
34
38
|
int (*next_token)(git_buf *out, git_http_auth_context *ctx, git_cred *cred);
|
|
35
39
|
|
|
40
|
+
/** Examines if all tokens have been presented. */
|
|
41
|
+
int (*is_complete)(git_http_auth_context *ctx);
|
|
42
|
+
|
|
36
43
|
/** Frees the authentication context */
|
|
37
44
|
void (*free)(git_http_auth_context *ctx);
|
|
38
45
|
};
|
|
@@ -50,15 +57,15 @@ typedef struct {
|
|
|
50
57
|
/** Function to initialize an authentication context */
|
|
51
58
|
int (*init_context)(
|
|
52
59
|
git_http_auth_context **out,
|
|
53
|
-
const
|
|
60
|
+
const git_net_url *url);
|
|
54
61
|
} git_http_auth_scheme;
|
|
55
62
|
|
|
56
63
|
int git_http_auth_dummy(
|
|
57
64
|
git_http_auth_context **out,
|
|
58
|
-
const
|
|
65
|
+
const git_net_url *url);
|
|
59
66
|
|
|
60
67
|
int git_http_auth_basic(
|
|
61
68
|
git_http_auth_context **out,
|
|
62
|
-
const
|
|
69
|
+
const git_net_url *url);
|
|
63
70
|
|
|
64
71
|
#endif
|
|
@@ -7,14 +7,19 @@
|
|
|
7
7
|
|
|
8
8
|
#include "auth_negotiate.h"
|
|
9
9
|
|
|
10
|
-
#
|
|
10
|
+
#if defined(GIT_GSSAPI) || defined(GIT_GSSFRAMEWORK)
|
|
11
11
|
|
|
12
12
|
#include "git2.h"
|
|
13
13
|
#include "buffer.h"
|
|
14
14
|
#include "auth.h"
|
|
15
|
+
#include "git2/sys/cred.h"
|
|
15
16
|
|
|
17
|
+
#ifdef GIT_GSSFRAMEWORK
|
|
18
|
+
#import <GSS/GSS.h>
|
|
19
|
+
#elif defined(GIT_GSSAPI)
|
|
16
20
|
#include <gssapi.h>
|
|
17
21
|
#include <krb5.h>
|
|
22
|
+
#endif
|
|
18
23
|
|
|
19
24
|
static gss_OID_desc negotiate_oid_spnego =
|
|
20
25
|
{ 6, (void *) "\x2b\x06\x01\x05\x05\x02" };
|
|
@@ -44,12 +49,12 @@ static void negotiate_err_set(
|
|
|
44
49
|
|
|
45
50
|
if (gss_display_status(&status_display, status_major, GSS_C_GSS_CODE,
|
|
46
51
|
GSS_C_NO_OID, &context, &buffer) == GSS_S_COMPLETE) {
|
|
47
|
-
|
|
52
|
+
git_error_set(GIT_ERROR_NET, "%s: %.*s (%d.%d)",
|
|
48
53
|
message, (int)buffer.length, (const char *)buffer.value,
|
|
49
54
|
status_major, status_minor);
|
|
50
55
|
gss_release_buffer(&status_minor, &buffer);
|
|
51
56
|
} else {
|
|
52
|
-
|
|
57
|
+
git_error_set(GIT_ERROR_NET, "%s: unknown negotiate error (%d.%d)",
|
|
53
58
|
message, status_major, status_minor);
|
|
54
59
|
}
|
|
55
60
|
}
|
|
@@ -65,7 +70,7 @@ static int negotiate_set_challenge(
|
|
|
65
70
|
git__free(ctx->challenge);
|
|
66
71
|
|
|
67
72
|
ctx->challenge = git__strdup(challenge);
|
|
68
|
-
|
|
73
|
+
GIT_ERROR_CHECK_ALLOC(ctx->challenge);
|
|
69
74
|
|
|
70
75
|
return 0;
|
|
71
76
|
}
|
|
@@ -108,13 +113,13 @@ static int negotiate_next_token(
|
|
|
108
113
|
challenge_len = ctx->challenge ? strlen(ctx->challenge) : 0;
|
|
109
114
|
|
|
110
115
|
if (challenge_len < 9) {
|
|
111
|
-
|
|
116
|
+
git_error_set(GIT_ERROR_NET, "no negotiate challenge sent from server");
|
|
112
117
|
error = -1;
|
|
113
118
|
goto done;
|
|
114
119
|
} else if (challenge_len > 9) {
|
|
115
120
|
if (git_buf_decode_base64(&input_buf,
|
|
116
121
|
ctx->challenge + 10, challenge_len - 10) < 0) {
|
|
117
|
-
|
|
122
|
+
git_error_set(GIT_ERROR_NET, "invalid negotiate challenge from server");
|
|
118
123
|
error = -1;
|
|
119
124
|
goto done;
|
|
120
125
|
}
|
|
@@ -123,7 +128,7 @@ static int negotiate_next_token(
|
|
|
123
128
|
input_token.length = input_buf.size;
|
|
124
129
|
input_token_ptr = &input_token;
|
|
125
130
|
} else if (ctx->gss_context != GSS_C_NO_CONTEXT) {
|
|
126
|
-
|
|
131
|
+
git_error_set(GIT_ERROR_NET, "could not restart authentication");
|
|
127
132
|
error = -1;
|
|
128
133
|
goto done;
|
|
129
134
|
}
|
|
@@ -144,7 +149,7 @@ static int negotiate_next_token(
|
|
|
144
149
|
&output_token,
|
|
145
150
|
NULL,
|
|
146
151
|
NULL))) {
|
|
147
|
-
negotiate_err_set(status_major, status_minor, "
|
|
152
|
+
negotiate_err_set(status_major, status_minor, "negotiate failure");
|
|
148
153
|
error = -1;
|
|
149
154
|
goto done;
|
|
150
155
|
}
|
|
@@ -155,9 +160,8 @@ static int negotiate_next_token(
|
|
|
155
160
|
goto done;
|
|
156
161
|
}
|
|
157
162
|
|
|
158
|
-
git_buf_puts(buf, "
|
|
163
|
+
git_buf_puts(buf, "Negotiate ");
|
|
159
164
|
git_buf_encode_base64(buf, output_token.value, output_token.length);
|
|
160
|
-
git_buf_puts(buf, "\r\n");
|
|
161
165
|
|
|
162
166
|
if (git_buf_oom(buf))
|
|
163
167
|
error = -1;
|
|
@@ -169,6 +173,15 @@ done:
|
|
|
169
173
|
return error;
|
|
170
174
|
}
|
|
171
175
|
|
|
176
|
+
static int negotiate_is_complete(git_http_auth_context *c)
|
|
177
|
+
{
|
|
178
|
+
http_auth_negotiate_context *ctx = (http_auth_negotiate_context *)c;
|
|
179
|
+
|
|
180
|
+
assert(ctx);
|
|
181
|
+
|
|
182
|
+
return (ctx->complete == 1);
|
|
183
|
+
}
|
|
184
|
+
|
|
172
185
|
static void negotiate_context_free(git_http_auth_context *c)
|
|
173
186
|
{
|
|
174
187
|
http_auth_negotiate_context *ctx = (http_auth_negotiate_context *)c;
|
|
@@ -193,7 +206,7 @@ static void negotiate_context_free(git_http_auth_context *c)
|
|
|
193
206
|
|
|
194
207
|
static int negotiate_init_context(
|
|
195
208
|
http_auth_negotiate_context *ctx,
|
|
196
|
-
const
|
|
209
|
+
const git_net_url *url)
|
|
197
210
|
{
|
|
198
211
|
OM_uint32 status_major, status_minor;
|
|
199
212
|
gss_OID item, *oid;
|
|
@@ -229,12 +242,12 @@ static int negotiate_init_context(
|
|
|
229
242
|
gss_release_oid_set(&status_minor, &mechanism_list);
|
|
230
243
|
|
|
231
244
|
if (!ctx->oid) {
|
|
232
|
-
|
|
245
|
+
git_error_set(GIT_ERROR_NET, "negotiate authentication is not supported");
|
|
233
246
|
return -1;
|
|
234
247
|
}
|
|
235
248
|
|
|
236
249
|
git_buf_puts(&ctx->target, "HTTP@");
|
|
237
|
-
git_buf_puts(&ctx->target,
|
|
250
|
+
git_buf_puts(&ctx->target, url->host);
|
|
238
251
|
|
|
239
252
|
if (git_buf_oom(&ctx->target))
|
|
240
253
|
return -1;
|
|
@@ -247,24 +260,26 @@ static int negotiate_init_context(
|
|
|
247
260
|
|
|
248
261
|
int git_http_auth_negotiate(
|
|
249
262
|
git_http_auth_context **out,
|
|
250
|
-
const
|
|
263
|
+
const git_net_url *url)
|
|
251
264
|
{
|
|
252
265
|
http_auth_negotiate_context *ctx;
|
|
253
266
|
|
|
254
267
|
*out = NULL;
|
|
255
268
|
|
|
256
269
|
ctx = git__calloc(1, sizeof(http_auth_negotiate_context));
|
|
257
|
-
|
|
270
|
+
GIT_ERROR_CHECK_ALLOC(ctx);
|
|
258
271
|
|
|
259
|
-
if (negotiate_init_context(ctx,
|
|
272
|
+
if (negotiate_init_context(ctx, url) < 0) {
|
|
260
273
|
git__free(ctx);
|
|
261
274
|
return -1;
|
|
262
275
|
}
|
|
263
276
|
|
|
264
277
|
ctx->parent.type = GIT_AUTHTYPE_NEGOTIATE;
|
|
265
278
|
ctx->parent.credtypes = GIT_CREDTYPE_DEFAULT;
|
|
279
|
+
ctx->parent.connection_affinity = 1;
|
|
266
280
|
ctx->parent.set_challenge = negotiate_set_challenge;
|
|
267
281
|
ctx->parent.next_token = negotiate_next_token;
|
|
282
|
+
ctx->parent.is_complete = negotiate_is_complete;
|
|
268
283
|
ctx->parent.free = negotiate_context_free;
|
|
269
284
|
|
|
270
285
|
*out = (git_http_auth_context *)ctx;
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
#include "git2.h"
|
|
13
13
|
#include "auth.h"
|
|
14
14
|
|
|
15
|
-
#
|
|
15
|
+
#if defined(GIT_GSSAPI) || defined(GIT_GSSFRAMEWORK)
|
|
16
16
|
|
|
17
17
|
extern int git_http_auth_negotiate(
|
|
18
18
|
git_http_auth_context **out,
|
|
19
|
-
const
|
|
19
|
+
const git_net_url *url);
|
|
20
20
|
|
|
21
21
|
#else
|
|
22
22
|
|