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
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
#include "posix.h"
|
|
11
11
|
#include "netops.h"
|
|
12
|
+
#include "registry.h"
|
|
12
13
|
#include "stream.h"
|
|
13
14
|
|
|
14
15
|
#ifndef _WIN32
|
|
@@ -34,16 +35,16 @@ static void net_set_error(const char *str)
|
|
|
34
35
|
char * win32_error = git_win32_get_error_message(error);
|
|
35
36
|
|
|
36
37
|
if (win32_error) {
|
|
37
|
-
|
|
38
|
+
git_error_set(GIT_ERROR_NET, "%s: %s", str, win32_error);
|
|
38
39
|
git__free(win32_error);
|
|
39
40
|
} else {
|
|
40
|
-
|
|
41
|
+
git_error_set(GIT_ERROR_NET, "%s", str);
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
#else
|
|
44
45
|
static void net_set_error(const char *str)
|
|
45
46
|
{
|
|
46
|
-
|
|
47
|
+
git_error_set(GIT_ERROR_NET, "%s: %s", str, strerror(errno));
|
|
47
48
|
}
|
|
48
49
|
#endif
|
|
49
50
|
|
|
@@ -57,7 +58,7 @@ static int close_socket(GIT_SOCKET s)
|
|
|
57
58
|
return -1;
|
|
58
59
|
|
|
59
60
|
if (0 != WSACleanup()) {
|
|
60
|
-
|
|
61
|
+
git_error_set(GIT_ERROR_OS, "winsock cleanup failed");
|
|
61
62
|
return -1;
|
|
62
63
|
}
|
|
63
64
|
|
|
@@ -68,7 +69,7 @@ static int close_socket(GIT_SOCKET s)
|
|
|
68
69
|
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
int socket_connect(git_stream *stream)
|
|
72
|
+
static int socket_connect(git_stream *stream)
|
|
72
73
|
{
|
|
73
74
|
struct addrinfo *info = NULL, *p;
|
|
74
75
|
struct addrinfo hints;
|
|
@@ -82,13 +83,13 @@ int socket_connect(git_stream *stream)
|
|
|
82
83
|
WSADATA wsd;
|
|
83
84
|
|
|
84
85
|
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) {
|
|
85
|
-
|
|
86
|
+
git_error_set(GIT_ERROR_OS, "winsock init failed");
|
|
86
87
|
return -1;
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
if (LOBYTE(wsd.wVersion) != 2 || HIBYTE(wsd.wVersion) != 2) {
|
|
90
91
|
WSACleanup();
|
|
91
|
-
|
|
92
|
+
git_error_set(GIT_ERROR_OS, "winsock init failed");
|
|
92
93
|
return -1;
|
|
93
94
|
}
|
|
94
95
|
#endif
|
|
@@ -98,7 +99,7 @@ int socket_connect(git_stream *stream)
|
|
|
98
99
|
hints.ai_family = AF_UNSPEC;
|
|
99
100
|
|
|
100
101
|
if ((ret = p_getaddrinfo(st->host, st->port, &hints, &info)) != 0) {
|
|
101
|
-
|
|
102
|
+
git_error_set(GIT_ERROR_NET,
|
|
102
103
|
"failed to resolve address for %s: %s", st->host, p_gai_strerror(ret));
|
|
103
104
|
return -1;
|
|
104
105
|
}
|
|
@@ -119,7 +120,7 @@ int socket_connect(git_stream *stream)
|
|
|
119
120
|
|
|
120
121
|
/* Oops, we couldn't connect to any address */
|
|
121
122
|
if (s == INVALID_SOCKET && p == NULL) {
|
|
122
|
-
|
|
123
|
+
git_error_set(GIT_ERROR_OS, "failed to connect to %s", st->host);
|
|
123
124
|
p_freeaddrinfo(info);
|
|
124
125
|
return -1;
|
|
125
126
|
}
|
|
@@ -129,38 +130,33 @@ int socket_connect(git_stream *stream)
|
|
|
129
130
|
return 0;
|
|
130
131
|
}
|
|
131
132
|
|
|
132
|
-
ssize_t socket_write(git_stream *stream, const char *data, size_t len, int flags)
|
|
133
|
+
static ssize_t socket_write(git_stream *stream, const char *data, size_t len, int flags)
|
|
133
134
|
{
|
|
134
|
-
ssize_t ret;
|
|
135
|
-
size_t off = 0;
|
|
136
135
|
git_socket_stream *st = (git_socket_stream *) stream;
|
|
136
|
+
ssize_t written;
|
|
137
137
|
|
|
138
|
-
|
|
139
|
-
errno = 0;
|
|
140
|
-
ret = p_send(st->s, data + off, len - off, flags);
|
|
141
|
-
if (ret < 0) {
|
|
142
|
-
net_set_error("Error sending data");
|
|
143
|
-
return -1;
|
|
144
|
-
}
|
|
138
|
+
errno = 0;
|
|
145
139
|
|
|
146
|
-
|
|
140
|
+
if ((written = p_send(st->s, data, len, flags)) < 0) {
|
|
141
|
+
net_set_error("error sending data");
|
|
142
|
+
return -1;
|
|
147
143
|
}
|
|
148
144
|
|
|
149
|
-
return
|
|
145
|
+
return written;
|
|
150
146
|
}
|
|
151
147
|
|
|
152
|
-
ssize_t socket_read(git_stream *stream, void *data, size_t len)
|
|
148
|
+
static ssize_t socket_read(git_stream *stream, void *data, size_t len)
|
|
153
149
|
{
|
|
154
150
|
ssize_t ret;
|
|
155
151
|
git_socket_stream *st = (git_socket_stream *) stream;
|
|
156
152
|
|
|
157
153
|
if ((ret = p_recv(st->s, data, len, 0)) < 0)
|
|
158
|
-
net_set_error("
|
|
154
|
+
net_set_error("error receiving socket data");
|
|
159
155
|
|
|
160
156
|
return ret;
|
|
161
157
|
}
|
|
162
158
|
|
|
163
|
-
int socket_close(git_stream *stream)
|
|
159
|
+
static int socket_close(git_stream *stream)
|
|
164
160
|
{
|
|
165
161
|
git_socket_stream *st = (git_socket_stream *) stream;
|
|
166
162
|
int error;
|
|
@@ -171,7 +167,7 @@ int socket_close(git_stream *stream)
|
|
|
171
167
|
return error;
|
|
172
168
|
}
|
|
173
169
|
|
|
174
|
-
void socket_free(git_stream *stream)
|
|
170
|
+
static void socket_free(git_stream *stream)
|
|
175
171
|
{
|
|
176
172
|
git_socket_stream *st = (git_socket_stream *) stream;
|
|
177
173
|
|
|
@@ -180,21 +176,24 @@ void socket_free(git_stream *stream)
|
|
|
180
176
|
git__free(st);
|
|
181
177
|
}
|
|
182
178
|
|
|
183
|
-
int
|
|
179
|
+
static int default_socket_stream_new(
|
|
180
|
+
git_stream **out,
|
|
181
|
+
const char *host,
|
|
182
|
+
const char *port)
|
|
184
183
|
{
|
|
185
184
|
git_socket_stream *st;
|
|
186
185
|
|
|
187
|
-
assert(out && host);
|
|
186
|
+
assert(out && host && port);
|
|
188
187
|
|
|
189
188
|
st = git__calloc(1, sizeof(git_socket_stream));
|
|
190
|
-
|
|
189
|
+
GIT_ERROR_CHECK_ALLOC(st);
|
|
191
190
|
|
|
192
191
|
st->host = git__strdup(host);
|
|
193
|
-
|
|
192
|
+
GIT_ERROR_CHECK_ALLOC(st->host);
|
|
194
193
|
|
|
195
194
|
if (port) {
|
|
196
195
|
st->port = git__strdup(port);
|
|
197
|
-
|
|
196
|
+
GIT_ERROR_CHECK_ALLOC(st->port);
|
|
198
197
|
}
|
|
199
198
|
|
|
200
199
|
st->parent.version = GIT_STREAM_VERSION;
|
|
@@ -208,3 +207,29 @@ int git_socket_stream_new(git_stream **out, const char *host, const char *port)
|
|
|
208
207
|
*out = (git_stream *) st;
|
|
209
208
|
return 0;
|
|
210
209
|
}
|
|
210
|
+
|
|
211
|
+
int git_socket_stream_new(
|
|
212
|
+
git_stream **out,
|
|
213
|
+
const char *host,
|
|
214
|
+
const char *port)
|
|
215
|
+
{
|
|
216
|
+
int (*init)(git_stream **, const char *, const char *) = NULL;
|
|
217
|
+
git_stream_registration custom = {0};
|
|
218
|
+
int error;
|
|
219
|
+
|
|
220
|
+
assert(out && host && port);
|
|
221
|
+
|
|
222
|
+
if ((error = git_stream_registry_lookup(&custom, GIT_STREAM_STANDARD)) == 0)
|
|
223
|
+
init = custom.init;
|
|
224
|
+
else if (error == GIT_ENOTFOUND)
|
|
225
|
+
init = default_socket_stream_new;
|
|
226
|
+
else
|
|
227
|
+
return error;
|
|
228
|
+
|
|
229
|
+
if (!init) {
|
|
230
|
+
git_error_set(GIT_ERROR_NET, "there is no socket stream available");
|
|
231
|
+
return -1;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
return init(out, host, port);
|
|
235
|
+
}
|
|
@@ -16,26 +16,25 @@
|
|
|
16
16
|
#include "git2/transport.h"
|
|
17
17
|
|
|
18
18
|
#include "streams/socket.h"
|
|
19
|
-
#include "streams/curl.h"
|
|
20
19
|
|
|
21
20
|
static int stransport_error(OSStatus ret)
|
|
22
21
|
{
|
|
23
22
|
CFStringRef message;
|
|
24
23
|
|
|
25
24
|
if (ret == noErr || ret == errSSLClosedGraceful) {
|
|
26
|
-
|
|
25
|
+
git_error_clear();
|
|
27
26
|
return 0;
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
#if !TARGET_OS_IPHONE
|
|
31
30
|
message = SecCopyErrorMessageString(ret, NULL);
|
|
32
|
-
|
|
31
|
+
GIT_ERROR_CHECK_ALLOC(message);
|
|
33
32
|
|
|
34
|
-
|
|
33
|
+
git_error_set(GIT_ERROR_NET, "SecureTransport error: %s", CFStringGetCStringPtr(message, kCFStringEncodingUTF8));
|
|
35
34
|
CFRelease(message);
|
|
36
35
|
#else
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
git_error_set(GIT_ERROR_NET, "SecureTransport error: OSStatus %d", (unsigned int)ret);
|
|
37
|
+
GIT_UNUSED(message);
|
|
39
38
|
#endif
|
|
40
39
|
|
|
41
40
|
return -1;
|
|
@@ -44,6 +43,7 @@ static int stransport_error(OSStatus ret)
|
|
|
44
43
|
typedef struct {
|
|
45
44
|
git_stream parent;
|
|
46
45
|
git_stream *io;
|
|
46
|
+
int owned;
|
|
47
47
|
SSLContextRef ctx;
|
|
48
48
|
CFDataRef der_data;
|
|
49
49
|
git_cert_x509 cert_info;
|
|
@@ -57,12 +57,12 @@ static int stransport_connect(git_stream *stream)
|
|
|
57
57
|
SecTrustResultType sec_res;
|
|
58
58
|
OSStatus ret;
|
|
59
59
|
|
|
60
|
-
if ((error = git_stream_connect(st->io)) < 0)
|
|
60
|
+
if (st->owned && (error = git_stream_connect(st->io)) < 0)
|
|
61
61
|
return error;
|
|
62
62
|
|
|
63
63
|
ret = SSLHandshake(st->ctx);
|
|
64
64
|
if (ret != errSSLServerAuthCompleted) {
|
|
65
|
-
|
|
65
|
+
git_error_set(GIT_ERROR_SSL, "unexpected return value from ssl handshake %d", (int)ret);
|
|
66
66
|
return -1;
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -78,13 +78,13 @@ static int stransport_connect(git_stream *stream)
|
|
|
78
78
|
CFRelease(trust);
|
|
79
79
|
|
|
80
80
|
if (sec_res == kSecTrustResultInvalid || sec_res == kSecTrustResultOtherError) {
|
|
81
|
-
|
|
81
|
+
git_error_set(GIT_ERROR_SSL, "internal security trust error");
|
|
82
82
|
return -1;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
if (sec_res == kSecTrustResultDeny || sec_res == kSecTrustResultRecoverableTrustFailure ||
|
|
86
86
|
sec_res == kSecTrustResultFatalTrustFailure) {
|
|
87
|
-
|
|
87
|
+
git_error_set(GIT_ERROR_SSL, "untrusted connection error");
|
|
88
88
|
return GIT_ECERTIFICATE;
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -112,7 +112,7 @@ static int stransport_certificate(git_cert **out, git_stream *stream)
|
|
|
112
112
|
CFRelease(trust);
|
|
113
113
|
|
|
114
114
|
if (st->der_data == NULL) {
|
|
115
|
-
|
|
115
|
+
git_error_set(GIT_ERROR_SSL, "retrieved invalid certificate data");
|
|
116
116
|
return -1;
|
|
117
117
|
}
|
|
118
118
|
|
|
@@ -149,9 +149,8 @@ static OSStatus write_cb(SSLConnectionRef conn, const void *data, size_t *len)
|
|
|
149
149
|
{
|
|
150
150
|
git_stream *io = (git_stream *) conn;
|
|
151
151
|
|
|
152
|
-
if (
|
|
152
|
+
if (git_stream__write_full(io, data, *len, 0) < 0)
|
|
153
153
|
return -36; /* "ioErr" from MacErrors.h which is not available on iOS */
|
|
154
|
-
}
|
|
155
154
|
|
|
156
155
|
return noErr;
|
|
157
156
|
}
|
|
@@ -164,11 +163,12 @@ static ssize_t stransport_write(git_stream *stream, const char *data, size_t len
|
|
|
164
163
|
|
|
165
164
|
GIT_UNUSED(flags);
|
|
166
165
|
|
|
167
|
-
data_len = len;
|
|
166
|
+
data_len = min(len, SSIZE_MAX);
|
|
168
167
|
if ((ret = SSLWrite(st->ctx, data, data_len, &processed)) != noErr)
|
|
169
168
|
return stransport_error(ret);
|
|
170
169
|
|
|
171
|
-
|
|
170
|
+
assert(processed < SSIZE_MAX);
|
|
171
|
+
return (ssize_t)processed;
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
/*
|
|
@@ -226,45 +226,42 @@ static int stransport_close(git_stream *stream)
|
|
|
226
226
|
if (ret != noErr && ret != errSSLClosedGraceful)
|
|
227
227
|
return stransport_error(ret);
|
|
228
228
|
|
|
229
|
-
return git_stream_close(st->io);
|
|
229
|
+
return st->owned ? git_stream_close(st->io) : 0;
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
static void stransport_free(git_stream *stream)
|
|
233
233
|
{
|
|
234
234
|
stransport_stream *st = (stransport_stream *) stream;
|
|
235
235
|
|
|
236
|
-
|
|
236
|
+
if (st->owned)
|
|
237
|
+
git_stream_free(st->io);
|
|
238
|
+
|
|
237
239
|
CFRelease(st->ctx);
|
|
238
240
|
if (st->der_data)
|
|
239
241
|
CFRelease(st->der_data);
|
|
240
242
|
git__free(st);
|
|
241
243
|
}
|
|
242
244
|
|
|
243
|
-
int
|
|
245
|
+
static int stransport_wrap(
|
|
246
|
+
git_stream **out,
|
|
247
|
+
git_stream *in,
|
|
248
|
+
const char *host,
|
|
249
|
+
int owned)
|
|
244
250
|
{
|
|
245
251
|
stransport_stream *st;
|
|
246
|
-
int error;
|
|
247
252
|
OSStatus ret;
|
|
248
253
|
|
|
249
|
-
assert(out && host);
|
|
254
|
+
assert(out && in && host);
|
|
250
255
|
|
|
251
256
|
st = git__calloc(1, sizeof(stransport_stream));
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
#ifdef GIT_CURL
|
|
255
|
-
error = git_curl_stream_new(&st->io, host, port);
|
|
256
|
-
#else
|
|
257
|
-
error = git_socket_stream_new(&st->io, host, port);
|
|
258
|
-
#endif
|
|
257
|
+
GIT_ERROR_CHECK_ALLOC(st);
|
|
259
258
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
return error;
|
|
263
|
-
}
|
|
259
|
+
st->io = in;
|
|
260
|
+
st->owned = owned;
|
|
264
261
|
|
|
265
262
|
st->ctx = SSLCreateContext(NULL, kSSLClientSide, kSSLStreamType);
|
|
266
263
|
if (!st->ctx) {
|
|
267
|
-
|
|
264
|
+
git_error_set(GIT_ERROR_NET, "failed to create SSL context");
|
|
268
265
|
git__free(st);
|
|
269
266
|
return -1;
|
|
270
267
|
}
|
|
@@ -295,4 +292,32 @@ int git_stransport_stream_new(git_stream **out, const char *host, const char *po
|
|
|
295
292
|
return 0;
|
|
296
293
|
}
|
|
297
294
|
|
|
295
|
+
int git_stransport_stream_wrap(
|
|
296
|
+
git_stream **out,
|
|
297
|
+
git_stream *in,
|
|
298
|
+
const char *host)
|
|
299
|
+
{
|
|
300
|
+
return stransport_wrap(out, in, host, 0);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
int git_stransport_stream_new(git_stream **out, const char *host, const char *port)
|
|
304
|
+
{
|
|
305
|
+
git_stream *stream = NULL;
|
|
306
|
+
int error;
|
|
307
|
+
|
|
308
|
+
assert(out && host);
|
|
309
|
+
|
|
310
|
+
error = git_socket_stream_new(&stream, host, port);
|
|
311
|
+
|
|
312
|
+
if (!error)
|
|
313
|
+
error = stransport_wrap(out, stream, host, 1);
|
|
314
|
+
|
|
315
|
+
if (error < 0 && stream) {
|
|
316
|
+
git_stream_close(stream);
|
|
317
|
+
git_stream_free(stream);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
return error;
|
|
321
|
+
}
|
|
322
|
+
|
|
298
323
|
#endif
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
|
|
12
12
|
#include "git2/sys/stream.h"
|
|
13
13
|
|
|
14
|
+
#ifdef GIT_SECURE_TRANSPORT
|
|
15
|
+
|
|
14
16
|
extern int git_stransport_stream_new(git_stream **out, const char *host, const char *port);
|
|
17
|
+
extern int git_stransport_stream_wrap(git_stream **out, git_stream *in, const char *host);
|
|
18
|
+
|
|
19
|
+
#endif
|
|
15
20
|
|
|
16
21
|
#endif
|
|
@@ -5,41 +5,69 @@
|
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
#include "streams/tls.h"
|
|
9
|
-
|
|
10
8
|
#include "git2/errors.h"
|
|
11
9
|
|
|
10
|
+
#include "common.h"
|
|
11
|
+
#include "global.h"
|
|
12
|
+
#include "streams/registry.h"
|
|
13
|
+
#include "streams/tls.h"
|
|
12
14
|
#include "streams/mbedtls.h"
|
|
13
15
|
#include "streams/openssl.h"
|
|
14
16
|
#include "streams/stransport.h"
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
int git_stream_register_tls(git_stream_cb ctor)
|
|
18
|
+
int git_tls_stream_new(git_stream **out, const char *host, const char *port)
|
|
19
19
|
{
|
|
20
|
-
|
|
20
|
+
int (*init)(git_stream **, const char *, const char *) = NULL;
|
|
21
|
+
git_stream_registration custom = {0};
|
|
22
|
+
int error;
|
|
23
|
+
|
|
24
|
+
assert(out && host && port);
|
|
21
25
|
|
|
22
|
-
|
|
26
|
+
if ((error = git_stream_registry_lookup(&custom, GIT_STREAM_TLS)) == 0) {
|
|
27
|
+
init = custom.init;
|
|
28
|
+
} else if (error == GIT_ENOTFOUND) {
|
|
29
|
+
#ifdef GIT_SECURE_TRANSPORT
|
|
30
|
+
init = git_stransport_stream_new;
|
|
31
|
+
#elif defined(GIT_OPENSSL)
|
|
32
|
+
init = git_openssl_stream_new;
|
|
33
|
+
#elif defined(GIT_MBEDTLS)
|
|
34
|
+
init = git_mbedtls_stream_new;
|
|
35
|
+
#endif
|
|
36
|
+
} else {
|
|
37
|
+
return error;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (!init) {
|
|
41
|
+
git_error_set(GIT_ERROR_SSL, "there is no TLS stream available");
|
|
42
|
+
return -1;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return init(out, host, port);
|
|
23
46
|
}
|
|
24
47
|
|
|
25
|
-
int
|
|
48
|
+
int git_tls_stream_wrap(git_stream **out, git_stream *in, const char *host)
|
|
26
49
|
{
|
|
50
|
+
int (*wrap)(git_stream **, git_stream *, const char *) = NULL;
|
|
51
|
+
git_stream_registration custom = {0};
|
|
27
52
|
|
|
28
|
-
|
|
29
|
-
return tls_ctor(out, host, port);
|
|
53
|
+
assert(out && in);
|
|
30
54
|
|
|
55
|
+
if (git_stream_registry_lookup(&custom, GIT_STREAM_TLS) == 0) {
|
|
56
|
+
wrap = custom.wrap;
|
|
57
|
+
} else {
|
|
31
58
|
#ifdef GIT_SECURE_TRANSPORT
|
|
32
|
-
|
|
59
|
+
wrap = git_stransport_stream_wrap;
|
|
33
60
|
#elif defined(GIT_OPENSSL)
|
|
34
|
-
|
|
61
|
+
wrap = git_openssl_stream_wrap;
|
|
35
62
|
#elif defined(GIT_MBEDTLS)
|
|
36
|
-
|
|
37
|
-
#else
|
|
38
|
-
GIT_UNUSED(out);
|
|
39
|
-
GIT_UNUSED(host);
|
|
40
|
-
GIT_UNUSED(port);
|
|
41
|
-
|
|
42
|
-
giterr_set(GITERR_SSL, "there is no TLS stream available");
|
|
43
|
-
return -1;
|
|
63
|
+
wrap = git_mbedtls_stream_wrap;
|
|
44
64
|
#endif
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (!wrap) {
|
|
68
|
+
git_error_set(GIT_ERROR_SSL, "there is no TLS stream available");
|
|
69
|
+
return -1;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return wrap(out, in, host);
|
|
45
73
|
}
|
|
@@ -13,11 +13,19 @@
|
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Create a TLS stream with the most appropriate backend available for
|
|
16
|
-
* the current platform
|
|
17
|
-
*
|
|
18
|
-
* This allows us to ask for a SecureTransport or OpenSSL stream
|
|
19
|
-
* according to being on general Unix vs OS X.
|
|
16
|
+
* the current platform, whether that's SecureTransport on macOS,
|
|
17
|
+
* OpenSSL or mbedTLS on other Unixes, or something else entirely.
|
|
20
18
|
*/
|
|
21
19
|
extern int git_tls_stream_new(git_stream **out, const char *host, const char *port);
|
|
22
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Create a TLS stream on top of an existing insecure stream, using
|
|
23
|
+
* the most appropriate backend available for the current platform.
|
|
24
|
+
*
|
|
25
|
+
* This allows us to create a CONNECT stream on top of a proxy;
|
|
26
|
+
* using SecureTransport on macOS, OpenSSL or mbedTLS on other
|
|
27
|
+
* Unixes, or something else entirely.
|
|
28
|
+
*/
|
|
29
|
+
extern int git_tls_stream_wrap(git_stream **out, git_stream *in, const char *host);
|
|
30
|
+
|
|
23
31
|
#endif
|
data/vendor/libgit2/src/strmap.c
CHANGED
|
@@ -7,14 +7,21 @@
|
|
|
7
7
|
|
|
8
8
|
#include "strmap.h"
|
|
9
9
|
|
|
10
|
+
#define kmalloc git__malloc
|
|
11
|
+
#define kcalloc git__calloc
|
|
12
|
+
#define krealloc git__realloc
|
|
13
|
+
#define kreallocarray git__reallocarray
|
|
14
|
+
#define kfree git__free
|
|
15
|
+
#include "khash.h"
|
|
16
|
+
|
|
17
|
+
__KHASH_TYPE(str, const char *, void *)
|
|
18
|
+
|
|
10
19
|
__KHASH_IMPL(str, static kh_inline, const char *, void *, 1, kh_str_hash_func, kh_str_hash_equal)
|
|
11
20
|
|
|
12
|
-
int
|
|
21
|
+
int git_strmap_new(git_strmap **out)
|
|
13
22
|
{
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return -1;
|
|
17
|
-
}
|
|
23
|
+
*out = kh_init(str);
|
|
24
|
+
GIT_ERROR_CHECK_ALLOC(*out);
|
|
18
25
|
|
|
19
26
|
return 0;
|
|
20
27
|
}
|
|
@@ -29,99 +36,65 @@ void git_strmap_clear(git_strmap *map)
|
|
|
29
36
|
kh_clear(str, map);
|
|
30
37
|
}
|
|
31
38
|
|
|
32
|
-
size_t
|
|
39
|
+
size_t git_strmap_size(git_strmap *map)
|
|
33
40
|
{
|
|
34
41
|
return kh_size(map);
|
|
35
42
|
}
|
|
36
43
|
|
|
37
|
-
|
|
38
|
-
{
|
|
39
|
-
return kh_get(str, map, key);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
int git_strmap_valid_index(git_strmap *map, size_t idx)
|
|
43
|
-
{
|
|
44
|
-
return idx != kh_end(map);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
int git_strmap_exists(git_strmap *map, const char *key)
|
|
44
|
+
void *git_strmap_get(git_strmap *map, const char *key)
|
|
48
45
|
{
|
|
49
|
-
|
|
46
|
+
size_t idx = kh_get(str, map, key);
|
|
47
|
+
if (idx == kh_end(map) || !kh_exist(map, idx))
|
|
48
|
+
return NULL;
|
|
49
|
+
return kh_val(map, idx);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
int
|
|
52
|
+
int git_strmap_set(git_strmap *map, const char *key, void *value)
|
|
53
53
|
{
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
size_t idx;
|
|
55
|
+
int rval;
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
57
|
+
idx = kh_put(str, map, key, &rval);
|
|
58
|
+
if (rval < 0)
|
|
59
|
+
return -1;
|
|
61
60
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
kh_val(map, idx) = key;
|
|
65
|
-
}
|
|
61
|
+
if (rval == 0)
|
|
62
|
+
kh_key(map, idx) = key;
|
|
66
63
|
|
|
67
|
-
void *git_strmap_value_at(git_strmap *map, size_t idx)
|
|
68
|
-
{
|
|
69
|
-
return kh_val(map, idx);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
void git_strmap_set_value_at(git_strmap *map, size_t idx, void *value)
|
|
73
|
-
{
|
|
74
64
|
kh_val(map, idx) = value;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
void git_strmap_delete_at(git_strmap *map, size_t idx)
|
|
78
|
-
{
|
|
79
|
-
kh_del(str, map, idx);
|
|
80
|
-
}
|
|
81
65
|
|
|
82
|
-
|
|
83
|
-
{
|
|
84
|
-
return kh_put(str, map, key, err);
|
|
66
|
+
return 0;
|
|
85
67
|
}
|
|
86
68
|
|
|
87
|
-
|
|
69
|
+
int git_strmap_delete(git_strmap *map, const char *key)
|
|
88
70
|
{
|
|
89
|
-
khiter_t idx =
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
kh_val(map, idx) = value;
|
|
95
|
-
}
|
|
71
|
+
khiter_t idx = kh_get(str, map, key);
|
|
72
|
+
if (idx == kh_end(map))
|
|
73
|
+
return GIT_ENOTFOUND;
|
|
74
|
+
kh_del(str, map, idx);
|
|
75
|
+
return 0;
|
|
96
76
|
}
|
|
97
77
|
|
|
98
|
-
|
|
78
|
+
int git_strmap_exists(git_strmap *map, const char *key)
|
|
99
79
|
{
|
|
100
|
-
|
|
101
|
-
if (git_strmap_valid_index(map, idx))
|
|
102
|
-
git_strmap_delete_at(map, idx);
|
|
80
|
+
return kh_get(str, map, key) != kh_end(map);
|
|
103
81
|
}
|
|
104
82
|
|
|
105
|
-
int
|
|
106
|
-
void **data,
|
|
107
|
-
git_strmap_iter* iter,
|
|
108
|
-
git_strmap *map)
|
|
83
|
+
int git_strmap_iterate(void **value, git_strmap *map, size_t *iter, const char **key)
|
|
109
84
|
{
|
|
110
|
-
|
|
111
|
-
return GIT_ERROR;
|
|
85
|
+
size_t i = *iter;
|
|
112
86
|
|
|
113
|
-
while (
|
|
114
|
-
|
|
115
|
-
++(*iter);
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
87
|
+
while (i < map->n_buckets && !kh_exist(map, i))
|
|
88
|
+
i++;
|
|
118
89
|
|
|
119
|
-
|
|
90
|
+
if (i >= map->n_buckets)
|
|
91
|
+
return GIT_ITEROVER;
|
|
120
92
|
|
|
121
|
-
|
|
93
|
+
if (key)
|
|
94
|
+
*key = kh_key(map, i);
|
|
95
|
+
if (value)
|
|
96
|
+
*value = kh_val(map, i);
|
|
97
|
+
*iter = ++i;
|
|
122
98
|
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return GIT_ITEROVER;
|
|
99
|
+
return 0;
|
|
127
100
|
}
|