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
|
@@ -18,10 +18,6 @@
|
|
|
18
18
|
#include "git2/transport.h"
|
|
19
19
|
#include "util.h"
|
|
20
20
|
|
|
21
|
-
#ifdef GIT_CURL
|
|
22
|
-
# include "streams/curl.h"
|
|
23
|
-
#endif
|
|
24
|
-
|
|
25
21
|
#ifndef GIT_DEFAULT_CERT_LOCATION
|
|
26
22
|
#define GIT_DEFAULT_CERT_LOCATION NULL
|
|
27
23
|
#endif
|
|
@@ -43,12 +39,13 @@
|
|
|
43
39
|
|
|
44
40
|
#undef inline
|
|
45
41
|
|
|
46
|
-
mbedtls_ssl_config *git__ssl_conf;
|
|
47
|
-
mbedtls_entropy_context *mbedtls_entropy;
|
|
48
|
-
|
|
49
42
|
#define GIT_SSL_DEFAULT_CIPHERS "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-DSS-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-DSS-WITH-AES-256-GCM-SHA384:TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256:TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA:TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA:TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384:TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384:TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA:TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-DSS-WITH-AES-128-CBC-SHA256:TLS-DHE-DSS-WITH-AES-256-CBC-SHA256:TLS-DHE-DSS-WITH-AES-128-CBC-SHA:TLS-DHE-DSS-WITH-AES-256-CBC-SHA:TLS-RSA-WITH-AES-128-GCM-SHA256:TLS-RSA-WITH-AES-256-GCM-SHA384:TLS-RSA-WITH-AES-128-CBC-SHA256:TLS-RSA-WITH-AES-256-CBC-SHA256:TLS-RSA-WITH-AES-128-CBC-SHA:TLS-RSA-WITH-AES-256-CBC-SHA"
|
|
50
43
|
#define GIT_SSL_DEFAULT_CIPHERS_COUNT 30
|
|
51
44
|
|
|
45
|
+
static mbedtls_ssl_config *git__ssl_conf;
|
|
46
|
+
static int ciphers_list[GIT_SSL_DEFAULT_CIPHERS_COUNT];
|
|
47
|
+
static mbedtls_entropy_context *mbedtls_entropy;
|
|
48
|
+
|
|
52
49
|
/**
|
|
53
50
|
* This function aims to clean-up the SSL context which
|
|
54
51
|
* we allocated.
|
|
@@ -80,21 +77,20 @@ int git_mbedtls_stream_global_init(void)
|
|
|
80
77
|
struct stat statbuf;
|
|
81
78
|
mbedtls_ctr_drbg_context *ctr_drbg = NULL;
|
|
82
79
|
|
|
83
|
-
|
|
84
|
-
int ciphers_known = 0;
|
|
80
|
+
size_t ciphers_known = 0;
|
|
85
81
|
char *cipher_name = NULL;
|
|
86
82
|
char *cipher_string = NULL;
|
|
87
83
|
char *cipher_string_tmp = NULL;
|
|
88
84
|
|
|
89
|
-
mbedtls_x509_crt *cacert = NULL;
|
|
90
|
-
|
|
91
85
|
git__ssl_conf = git__malloc(sizeof(mbedtls_ssl_config));
|
|
86
|
+
GIT_ERROR_CHECK_ALLOC(git__ssl_conf);
|
|
87
|
+
|
|
92
88
|
mbedtls_ssl_config_init(git__ssl_conf);
|
|
93
89
|
if (mbedtls_ssl_config_defaults(git__ssl_conf,
|
|
94
90
|
MBEDTLS_SSL_IS_CLIENT,
|
|
95
91
|
MBEDTLS_SSL_TRANSPORT_STREAM,
|
|
96
92
|
MBEDTLS_SSL_PRESET_DEFAULT) != 0) {
|
|
97
|
-
|
|
93
|
+
git_error_set(GIT_ERROR_SSL, "failed to initialize mbedTLS");
|
|
98
94
|
goto cleanup;
|
|
99
95
|
}
|
|
100
96
|
|
|
@@ -107,33 +103,44 @@ int git_mbedtls_stream_global_init(void)
|
|
|
107
103
|
mbedtls_ssl_conf_authmode(git__ssl_conf, MBEDTLS_SSL_VERIFY_OPTIONAL);
|
|
108
104
|
|
|
109
105
|
/* set the list of allowed ciphersuites */
|
|
110
|
-
ciphers_list = calloc(GIT_SSL_DEFAULT_CIPHERS_COUNT, sizeof(int));
|
|
111
106
|
ciphers_known = 0;
|
|
112
107
|
cipher_string = cipher_string_tmp = git__strdup(GIT_SSL_DEFAULT_CIPHERS);
|
|
108
|
+
GIT_ERROR_CHECK_ALLOC(cipher_string);
|
|
109
|
+
|
|
113
110
|
while ((cipher_name = git__strtok(&cipher_string_tmp, ":")) != NULL) {
|
|
114
111
|
int cipherid = mbedtls_ssl_get_ciphersuite_id(cipher_name);
|
|
115
112
|
if (cipherid == 0) continue;
|
|
116
113
|
|
|
114
|
+
if (ciphers_known >= ARRAY_SIZE(ciphers_list)) {
|
|
115
|
+
git_error_set(GIT_ERROR_SSL, "out of cipher list space");
|
|
116
|
+
goto cleanup;
|
|
117
|
+
}
|
|
118
|
+
|
|
117
119
|
ciphers_list[ciphers_known++] = cipherid;
|
|
118
120
|
}
|
|
119
121
|
git__free(cipher_string);
|
|
120
122
|
|
|
121
123
|
if (!ciphers_known) {
|
|
122
|
-
|
|
124
|
+
git_error_set(GIT_ERROR_SSL, "no cipher could be enabled");
|
|
123
125
|
goto cleanup;
|
|
124
126
|
}
|
|
125
127
|
mbedtls_ssl_conf_ciphersuites(git__ssl_conf, ciphers_list);
|
|
126
128
|
|
|
127
129
|
/* Seeding the random number generator */
|
|
128
130
|
mbedtls_entropy = git__malloc(sizeof(mbedtls_entropy_context));
|
|
131
|
+
GIT_ERROR_CHECK_ALLOC(mbedtls_entropy);
|
|
132
|
+
|
|
129
133
|
mbedtls_entropy_init(mbedtls_entropy);
|
|
130
134
|
|
|
131
135
|
ctr_drbg = git__malloc(sizeof(mbedtls_ctr_drbg_context));
|
|
136
|
+
GIT_ERROR_CHECK_ALLOC(ctr_drbg);
|
|
137
|
+
|
|
132
138
|
mbedtls_ctr_drbg_init(ctr_drbg);
|
|
139
|
+
|
|
133
140
|
if (mbedtls_ctr_drbg_seed(ctr_drbg,
|
|
134
141
|
mbedtls_entropy_func,
|
|
135
142
|
mbedtls_entropy, NULL, 0) != 0) {
|
|
136
|
-
|
|
143
|
+
git_error_set(GIT_ERROR_SSL, "failed to initialize mbedTLS entropy pool");
|
|
137
144
|
goto cleanup;
|
|
138
145
|
}
|
|
139
146
|
|
|
@@ -150,8 +157,6 @@ int git_mbedtls_stream_global_init(void)
|
|
|
150
157
|
return 0;
|
|
151
158
|
|
|
152
159
|
cleanup:
|
|
153
|
-
mbedtls_x509_crt_free(cacert);
|
|
154
|
-
git__free(cacert);
|
|
155
160
|
mbedtls_ctr_drbg_free(ctr_drbg);
|
|
156
161
|
git__free(ctr_drbg);
|
|
157
162
|
mbedtls_ssl_config_free(git__ssl_conf);
|
|
@@ -161,18 +166,16 @@ cleanup:
|
|
|
161
166
|
return -1;
|
|
162
167
|
}
|
|
163
168
|
|
|
164
|
-
mbedtls_ssl_config *git__ssl_conf;
|
|
165
|
-
|
|
166
169
|
static int bio_read(void *b, unsigned char *buf, size_t len)
|
|
167
170
|
{
|
|
168
171
|
git_stream *io = (git_stream *) b;
|
|
169
|
-
return (int) git_stream_read(io, buf, len);
|
|
172
|
+
return (int) git_stream_read(io, buf, min(len, INT_MAX));
|
|
170
173
|
}
|
|
171
174
|
|
|
172
175
|
static int bio_write(void *b, const unsigned char *buf, size_t len)
|
|
173
176
|
{
|
|
174
177
|
git_stream *io = (git_stream *) b;
|
|
175
|
-
return (int) git_stream_write(io, (const char *)buf, len, 0);
|
|
178
|
+
return (int) git_stream_write(io, (const char *)buf, min(len, INT_MAX), 0);
|
|
176
179
|
}
|
|
177
180
|
|
|
178
181
|
static int ssl_set_error(mbedtls_ssl_context *ssl, int error)
|
|
@@ -188,16 +191,16 @@ static int ssl_set_error(mbedtls_ssl_context *ssl, int error)
|
|
|
188
191
|
|
|
189
192
|
switch(error) {
|
|
190
193
|
case 0:
|
|
191
|
-
|
|
194
|
+
git_error_set(GIT_ERROR_SSL, "SSL error: unknown error");
|
|
192
195
|
break;
|
|
193
196
|
|
|
194
197
|
case MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:
|
|
195
|
-
|
|
198
|
+
git_error_set(GIT_ERROR_SSL, "SSL error: %#04x [%x] - %s", error, ssl->session_negotiate->verify_result, errbuf);
|
|
196
199
|
ret = GIT_ECERTIFICATE;
|
|
197
200
|
break;
|
|
198
201
|
|
|
199
202
|
default:
|
|
200
|
-
|
|
203
|
+
git_error_set(GIT_ERROR_SSL, "SSL error: %#04x - %s", error, errbuf);
|
|
201
204
|
}
|
|
202
205
|
|
|
203
206
|
return ret;
|
|
@@ -223,7 +226,7 @@ static int verify_server_cert(mbedtls_ssl_context *ssl)
|
|
|
223
226
|
char vrfy_buf[512];
|
|
224
227
|
int len = mbedtls_x509_crt_verify_info(vrfy_buf, sizeof(vrfy_buf), "", ret);
|
|
225
228
|
if (len >= 1) vrfy_buf[len - 1] = '\0'; /* Remove trailing \n */
|
|
226
|
-
|
|
229
|
+
git_error_set(GIT_ERROR_SSL, "the SSL certificate is invalid: %#04x - %s", ret, vrfy_buf);
|
|
227
230
|
return GIT_ECERTIFICATE;
|
|
228
231
|
}
|
|
229
232
|
|
|
@@ -233,6 +236,7 @@ static int verify_server_cert(mbedtls_ssl_context *ssl)
|
|
|
233
236
|
typedef struct {
|
|
234
237
|
git_stream parent;
|
|
235
238
|
git_stream *io;
|
|
239
|
+
int owned;
|
|
236
240
|
bool connected;
|
|
237
241
|
char *host;
|
|
238
242
|
mbedtls_ssl_context *ssl;
|
|
@@ -240,12 +244,12 @@ typedef struct {
|
|
|
240
244
|
} mbedtls_stream;
|
|
241
245
|
|
|
242
246
|
|
|
243
|
-
int mbedtls_connect(git_stream *stream)
|
|
247
|
+
static int mbedtls_connect(git_stream *stream)
|
|
244
248
|
{
|
|
245
249
|
int ret;
|
|
246
250
|
mbedtls_stream *st = (mbedtls_stream *) stream;
|
|
247
251
|
|
|
248
|
-
if ((ret = git_stream_connect(st->io)) < 0)
|
|
252
|
+
if (st->owned && (ret = git_stream_connect(st->io)) < 0)
|
|
249
253
|
return ret;
|
|
250
254
|
|
|
251
255
|
st->connected = true;
|
|
@@ -260,25 +264,25 @@ int mbedtls_connect(git_stream *stream)
|
|
|
260
264
|
return verify_server_cert(st->ssl);
|
|
261
265
|
}
|
|
262
266
|
|
|
263
|
-
int mbedtls_certificate(git_cert **out, git_stream *stream)
|
|
267
|
+
static int mbedtls_certificate(git_cert **out, git_stream *stream)
|
|
264
268
|
{
|
|
265
269
|
unsigned char *encoded_cert;
|
|
266
270
|
mbedtls_stream *st = (mbedtls_stream *) stream;
|
|
267
271
|
|
|
268
272
|
const mbedtls_x509_crt *cert = mbedtls_ssl_get_peer_cert(st->ssl);
|
|
269
273
|
if (!cert) {
|
|
270
|
-
|
|
274
|
+
git_error_set(GIT_ERROR_SSL, "the server did not provide a certificate");
|
|
271
275
|
return -1;
|
|
272
276
|
}
|
|
273
277
|
|
|
274
278
|
/* Retrieve the length of the certificate first */
|
|
275
279
|
if (cert->raw.len == 0) {
|
|
276
|
-
|
|
280
|
+
git_error_set(GIT_ERROR_NET, "failed to retrieve certificate information");
|
|
277
281
|
return -1;
|
|
278
282
|
}
|
|
279
283
|
|
|
280
284
|
encoded_cert = git__malloc(cert->raw.len);
|
|
281
|
-
|
|
285
|
+
GIT_ERROR_CHECK_ALLOC(encoded_cert);
|
|
282
286
|
memcpy(encoded_cert, cert->raw.p, cert->raw.len);
|
|
283
287
|
|
|
284
288
|
st->cert_info.parent.cert_type = GIT_CERT_X509;
|
|
@@ -297,25 +301,27 @@ static int mbedtls_set_proxy(git_stream *stream, const git_proxy_options *proxy_
|
|
|
297
301
|
return git_stream_set_proxy(st->io, proxy_options);
|
|
298
302
|
}
|
|
299
303
|
|
|
300
|
-
ssize_t mbedtls_stream_write(git_stream *stream, const char *data, size_t len, int flags)
|
|
304
|
+
static ssize_t mbedtls_stream_write(git_stream *stream, const char *data, size_t len, int flags)
|
|
301
305
|
{
|
|
302
|
-
size_t read = 0;
|
|
303
306
|
mbedtls_stream *st = (mbedtls_stream *) stream;
|
|
307
|
+
int written;
|
|
304
308
|
|
|
305
309
|
GIT_UNUSED(flags);
|
|
306
310
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
311
|
+
/*
|
|
312
|
+
* `mbedtls_ssl_write` can only represent INT_MAX bytes
|
|
313
|
+
* written via its return value. We thus need to clamp
|
|
314
|
+
* the maximum number of bytes written.
|
|
315
|
+
*/
|
|
316
|
+
len = min(len, INT_MAX);
|
|
317
|
+
|
|
318
|
+
if ((written = mbedtls_ssl_write(st->ssl, (const unsigned char *)data, len)) <= 0)
|
|
319
|
+
return ssl_set_error(st->ssl, written);
|
|
314
320
|
|
|
315
|
-
return
|
|
321
|
+
return written;
|
|
316
322
|
}
|
|
317
323
|
|
|
318
|
-
ssize_t mbedtls_stream_read(git_stream *stream, void *data, size_t len)
|
|
324
|
+
static ssize_t mbedtls_stream_read(git_stream *stream, void *data, size_t len)
|
|
319
325
|
{
|
|
320
326
|
mbedtls_stream *st = (mbedtls_stream *) stream;
|
|
321
327
|
int ret;
|
|
@@ -326,7 +332,7 @@ ssize_t mbedtls_stream_read(git_stream *stream, void *data, size_t len)
|
|
|
326
332
|
return ret;
|
|
327
333
|
}
|
|
328
334
|
|
|
329
|
-
int mbedtls_stream_close(git_stream *stream)
|
|
335
|
+
static int mbedtls_stream_close(git_stream *stream)
|
|
330
336
|
{
|
|
331
337
|
mbedtls_stream *st = (mbedtls_stream *) stream;
|
|
332
338
|
int ret = 0;
|
|
@@ -336,48 +342,49 @@ int mbedtls_stream_close(git_stream *stream)
|
|
|
336
342
|
|
|
337
343
|
st->connected = false;
|
|
338
344
|
|
|
339
|
-
return git_stream_close(st->io);
|
|
345
|
+
return st->owned ? git_stream_close(st->io) : 0;
|
|
340
346
|
}
|
|
341
347
|
|
|
342
|
-
void mbedtls_stream_free(git_stream *stream)
|
|
348
|
+
static void mbedtls_stream_free(git_stream *stream)
|
|
343
349
|
{
|
|
344
350
|
mbedtls_stream *st = (mbedtls_stream *) stream;
|
|
345
351
|
|
|
352
|
+
if (st->owned)
|
|
353
|
+
git_stream_free(st->io);
|
|
354
|
+
|
|
346
355
|
git__free(st->host);
|
|
347
356
|
git__free(st->cert_info.data);
|
|
348
|
-
|
|
357
|
+
mbedtls_ssl_free(st->ssl);
|
|
349
358
|
git__free(st->ssl);
|
|
350
359
|
git__free(st);
|
|
351
360
|
}
|
|
352
361
|
|
|
353
|
-
int
|
|
362
|
+
static int mbedtls_stream_wrap(
|
|
363
|
+
git_stream **out,
|
|
364
|
+
git_stream *in,
|
|
365
|
+
const char *host,
|
|
366
|
+
int owned)
|
|
354
367
|
{
|
|
355
|
-
int error;
|
|
356
368
|
mbedtls_stream *st;
|
|
369
|
+
int error;
|
|
357
370
|
|
|
358
371
|
st = git__calloc(1, sizeof(mbedtls_stream));
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
#ifdef GIT_CURL
|
|
362
|
-
error = git_curl_stream_new(&st->io, host, port);
|
|
363
|
-
#else
|
|
364
|
-
error = git_socket_stream_new(&st->io, host, port);
|
|
365
|
-
#endif
|
|
372
|
+
GIT_ERROR_CHECK_ALLOC(st);
|
|
366
373
|
|
|
367
|
-
|
|
368
|
-
|
|
374
|
+
st->io = in;
|
|
375
|
+
st->owned = owned;
|
|
369
376
|
|
|
370
377
|
st->ssl = git__malloc(sizeof(mbedtls_ssl_context));
|
|
371
|
-
|
|
378
|
+
GIT_ERROR_CHECK_ALLOC(st->ssl);
|
|
372
379
|
mbedtls_ssl_init(st->ssl);
|
|
373
380
|
if (mbedtls_ssl_setup(st->ssl, git__ssl_conf)) {
|
|
374
|
-
|
|
381
|
+
git_error_set(GIT_ERROR_SSL, "failed to create ssl object");
|
|
375
382
|
error = -1;
|
|
376
383
|
goto out_err;
|
|
377
384
|
}
|
|
378
385
|
|
|
379
386
|
st->host = git__strdup(host);
|
|
380
|
-
|
|
387
|
+
GIT_ERROR_CHECK_ALLOC(st->host);
|
|
381
388
|
|
|
382
389
|
st->parent.version = GIT_STREAM_VERSION;
|
|
383
390
|
st->parent.encrypted = 1;
|
|
@@ -395,12 +402,42 @@ int git_mbedtls_stream_new(git_stream **out, const char *host, const char *port)
|
|
|
395
402
|
|
|
396
403
|
out_err:
|
|
397
404
|
mbedtls_ssl_free(st->ssl);
|
|
405
|
+
git_stream_close(st->io);
|
|
398
406
|
git_stream_free(st->io);
|
|
399
407
|
git__free(st);
|
|
400
408
|
|
|
401
409
|
return error;
|
|
402
410
|
}
|
|
403
411
|
|
|
412
|
+
int git_mbedtls_stream_wrap(
|
|
413
|
+
git_stream **out,
|
|
414
|
+
git_stream *in,
|
|
415
|
+
const char *host)
|
|
416
|
+
{
|
|
417
|
+
return mbedtls_stream_wrap(out, in, host, 0);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
int git_mbedtls_stream_new(
|
|
421
|
+
git_stream **out,
|
|
422
|
+
const char *host,
|
|
423
|
+
const char *port)
|
|
424
|
+
{
|
|
425
|
+
git_stream *stream;
|
|
426
|
+
int error;
|
|
427
|
+
|
|
428
|
+
assert(out && host && port);
|
|
429
|
+
|
|
430
|
+
if ((error = git_socket_stream_new(&stream, host, port)) < 0)
|
|
431
|
+
return error;
|
|
432
|
+
|
|
433
|
+
if ((error = mbedtls_stream_wrap(out, stream, host, 1)) < 0) {
|
|
434
|
+
git_stream_close(stream);
|
|
435
|
+
git_stream_free(stream);
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
return error;
|
|
439
|
+
}
|
|
440
|
+
|
|
404
441
|
int git_mbedtls__set_cert_location(const char *path, int is_dir)
|
|
405
442
|
{
|
|
406
443
|
int ret = 0;
|
|
@@ -410,6 +447,8 @@ int git_mbedtls__set_cert_location(const char *path, int is_dir)
|
|
|
410
447
|
assert(path != NULL);
|
|
411
448
|
|
|
412
449
|
cacert = git__malloc(sizeof(mbedtls_x509_crt));
|
|
450
|
+
GIT_ERROR_CHECK_ALLOC(cacert);
|
|
451
|
+
|
|
413
452
|
mbedtls_x509_crt_init(cacert);
|
|
414
453
|
if (is_dir) {
|
|
415
454
|
ret = mbedtls_x509_crt_parse_path(cacert, path);
|
|
@@ -421,7 +460,7 @@ int git_mbedtls__set_cert_location(const char *path, int is_dir)
|
|
|
421
460
|
mbedtls_x509_crt_free(cacert);
|
|
422
461
|
git__free(cacert);
|
|
423
462
|
mbedtls_strerror( ret, errbuf, 512 );
|
|
424
|
-
|
|
463
|
+
git_error_set(GIT_ERROR_SSL, "failed to load CA certificates: %#04x - %s", ret, errbuf);
|
|
425
464
|
return -1;
|
|
426
465
|
}
|
|
427
466
|
|
|
@@ -441,23 +480,4 @@ int git_mbedtls_stream_global_init(void)
|
|
|
441
480
|
return 0;
|
|
442
481
|
}
|
|
443
482
|
|
|
444
|
-
int git_mbedtls_stream_new(git_stream **out, const char *host, const char *port)
|
|
445
|
-
{
|
|
446
|
-
GIT_UNUSED(out);
|
|
447
|
-
GIT_UNUSED(host);
|
|
448
|
-
GIT_UNUSED(port);
|
|
449
|
-
|
|
450
|
-
giterr_set(GITERR_SSL, "mbedTLS is not supported in this version");
|
|
451
|
-
return -1;
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
int git_mbedtls__set_cert_location(const char *path, int is_dir)
|
|
455
|
-
{
|
|
456
|
-
GIT_UNUSED(path);
|
|
457
|
-
GIT_UNUSED(is_dir);
|
|
458
|
-
|
|
459
|
-
giterr_set(GITERR_SSL, "mbedTLS is not supported in this version");
|
|
460
|
-
return -1;
|
|
461
|
-
}
|
|
462
|
-
|
|
463
483
|
#endif
|
|
@@ -13,8 +13,11 @@
|
|
|
13
13
|
|
|
14
14
|
extern int git_mbedtls_stream_global_init(void);
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
#ifdef GIT_MBEDTLS
|
|
18
17
|
extern int git_mbedtls__set_cert_location(const char *path, int is_dir);
|
|
19
18
|
|
|
19
|
+
extern int git_mbedtls_stream_new(git_stream **out, const char *host, const char *port);
|
|
20
|
+
extern int git_mbedtls_stream_wrap(git_stream **out, git_stream *in, const char *host);
|
|
21
|
+
#endif
|
|
22
|
+
|
|
20
23
|
#endif
|