rugged 1.0.0 → 1.2.0
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/LICENSE +1 -0
- data/README.md +3 -3
- data/ext/rugged/rugged.c +7 -4
- data/ext/rugged/rugged_commit.c +1 -1
- data/ext/rugged/rugged_config.c +1 -1
- data/ext/rugged/rugged_object.c +1 -1
- data/ext/rugged/rugged_remote.c +32 -2
- data/ext/rugged/rugged_repo.c +13 -3
- data/lib/rugged/commit.rb +17 -4
- data/lib/rugged/repository.rb +7 -8
- data/lib/rugged/submodule_collection.rb +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +41 -74
- data/vendor/libgit2/COPYING +109 -1
- data/vendor/libgit2/cmake/{Modules/AddCFlagIfSupported.cmake → AddCFlagIfSupported.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/EnableWarnings.cmake → EnableWarnings.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindCoreFoundation.cmake → FindCoreFoundation.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindGSSAPI.cmake → FindGSSAPI.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindGSSFramework.cmake → FindGSSFramework.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindHTTP_Parser.cmake → FindHTTP_Parser.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindIconv.cmake → FindIconv.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPCRE.cmake → FindPCRE.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPCRE2.cmake → FindPCRE2.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPkgLibraries.cmake → FindPkgLibraries.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindSecurity.cmake → FindSecurity.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindStatNsec.cmake → FindStatNsec.cmake} +0 -0
- data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
- data/vendor/libgit2/cmake/{Modules/FindmbedTLS.cmake → FindmbedTLS.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/IdeSplitSources.cmake → IdeSplitSources.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/PkgBuildConfig.cmake → PkgBuildConfig.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/SanitizeBool.cmake → SanitizeBool.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/SelectGSSAPI.cmake → SelectGSSAPI.cmake} +18 -26
- data/vendor/libgit2/cmake/{Modules/SelectHTTPSBackend.cmake → SelectHTTPSBackend.cmake} +29 -32
- data/vendor/libgit2/cmake/{Modules/SelectHashes.cmake → SelectHashes.cmake} +21 -28
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +4 -3
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +24 -10
- data/vendor/libgit2/deps/ntlmclient/compat.h +0 -27
- data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +164 -135
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
- data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
- data/vendor/libgit2/deps/ntlmclient/util.c +15 -1
- data/vendor/libgit2/deps/ntlmclient/util.h +2 -1
- data/vendor/libgit2/deps/pcre/LICENCE +93 -0
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +29 -17
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +4 -4
- data/vendor/libgit2/deps/pcre/pcreposix.c +2 -3
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -5
- data/vendor/libgit2/deps/zlib/deflate.c +1 -0
- data/vendor/libgit2/include/git2/annotated_commit.h +1 -1
- data/vendor/libgit2/include/git2/apply.h +2 -0
- data/vendor/libgit2/include/git2/attr.h +89 -0
- data/vendor/libgit2/include/git2/blame.h +95 -42
- data/vendor/libgit2/include/git2/blob.h +31 -3
- data/vendor/libgit2/include/git2/branch.h +25 -0
- data/vendor/libgit2/include/git2/cert.h +42 -5
- data/vendor/libgit2/include/git2/checkout.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +35 -19
- data/vendor/libgit2/include/git2/common.h +33 -6
- data/vendor/libgit2/include/git2/config.h +1 -1
- data/vendor/libgit2/include/git2/deprecated.h +248 -8
- data/vendor/libgit2/include/git2/diff.h +35 -20
- data/vendor/libgit2/include/git2/errors.h +8 -7
- data/vendor/libgit2/include/git2/filter.h +57 -17
- data/vendor/libgit2/include/git2/graph.h +20 -2
- data/vendor/libgit2/include/git2/index.h +4 -5
- data/vendor/libgit2/include/git2/indexer.h +2 -1
- data/vendor/libgit2/include/git2/odb.h +44 -20
- data/vendor/libgit2/include/git2/pack.h +1 -1
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/rebase.h +25 -1
- data/vendor/libgit2/include/git2/refs.h +9 -5
- data/vendor/libgit2/include/git2/remote.h +59 -6
- data/vendor/libgit2/include/git2/repository.h +95 -52
- data/vendor/libgit2/include/git2/revparse.h +5 -5
- data/vendor/libgit2/include/git2/status.h +115 -59
- data/vendor/libgit2/include/git2/strarray.h +6 -10
- data/vendor/libgit2/include/git2/submodule.h +9 -0
- data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
- data/vendor/libgit2/include/git2/sys/filter.h +49 -28
- data/vendor/libgit2/include/git2/sys/midx.h +74 -0
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
- data/vendor/libgit2/include/git2/sys/transport.h +1 -0
- data/vendor/libgit2/include/git2/tag.h +12 -0
- data/vendor/libgit2/include/git2/transport.h +1 -1
- data/vendor/libgit2/include/git2/tree.h +2 -14
- data/vendor/libgit2/include/git2/types.h +9 -0
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +77 -44
- data/vendor/libgit2/src/alloc.c +21 -8
- data/vendor/libgit2/src/allocators/failalloc.c +92 -0
- data/vendor/libgit2/src/allocators/failalloc.h +23 -0
- data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
- data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
- data/vendor/libgit2/src/annotated_commit.c +21 -9
- data/vendor/libgit2/src/apply.c +21 -8
- data/vendor/libgit2/src/array.h +11 -11
- data/vendor/libgit2/src/assert_safe.h +58 -0
- data/vendor/libgit2/src/attr.c +181 -74
- data/vendor/libgit2/src/attr_file.c +92 -42
- data/vendor/libgit2/src/attr_file.h +32 -11
- data/vendor/libgit2/src/attrcache.c +44 -40
- data/vendor/libgit2/src/attrcache.h +4 -5
- data/vendor/libgit2/src/blame.c +28 -15
- data/vendor/libgit2/src/blame_git.c +6 -3
- data/vendor/libgit2/src/blob.c +46 -24
- data/vendor/libgit2/src/branch.c +87 -37
- data/vendor/libgit2/src/buffer.c +339 -27
- data/vendor/libgit2/src/buffer.h +153 -2
- data/vendor/libgit2/src/cache.c +3 -24
- data/vendor/libgit2/src/cache.h +7 -7
- data/vendor/libgit2/src/cc-compat.h +10 -2
- data/vendor/libgit2/src/checkout.c +97 -98
- data/vendor/libgit2/src/cherrypick.c +8 -2
- data/vendor/libgit2/src/clone.c +104 -29
- data/vendor/libgit2/src/commit.c +41 -28
- data/vendor/libgit2/src/commit_graph.c +1209 -0
- data/vendor/libgit2/src/commit_graph.h +162 -0
- data/vendor/libgit2/src/commit_list.c +46 -0
- data/vendor/libgit2/src/commit_list.h +2 -0
- data/vendor/libgit2/src/common.h +26 -2
- data/vendor/libgit2/src/config.c +40 -22
- data/vendor/libgit2/src/config_cache.c +9 -4
- data/vendor/libgit2/src/config_entries.c +35 -27
- data/vendor/libgit2/src/config_file.c +25 -8
- data/vendor/libgit2/src/config_parse.c +5 -7
- data/vendor/libgit2/src/config_snapshot.c +2 -1
- data/vendor/libgit2/src/crlf.c +16 -6
- data/vendor/libgit2/src/date.c +4 -3
- data/vendor/libgit2/src/delta.c +1 -1
- data/vendor/libgit2/src/describe.c +11 -4
- data/vendor/libgit2/src/diff.c +23 -19
- data/vendor/libgit2/src/diff_driver.c +21 -17
- data/vendor/libgit2/src/diff_file.c +5 -7
- data/vendor/libgit2/src/diff_generate.c +56 -28
- data/vendor/libgit2/src/diff_parse.c +2 -3
- data/vendor/libgit2/src/diff_print.c +81 -65
- data/vendor/libgit2/src/diff_stats.c +19 -16
- data/vendor/libgit2/src/diff_tform.c +13 -13
- data/vendor/libgit2/src/diff_xdiff.c +4 -2
- data/vendor/libgit2/src/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/errors.c +26 -19
- data/vendor/libgit2/src/features.h.in +5 -1
- data/vendor/libgit2/src/fetch.c +7 -2
- data/vendor/libgit2/src/fetchhead.c +8 -4
- data/vendor/libgit2/src/filebuf.c +9 -7
- data/vendor/libgit2/src/filter.c +209 -113
- data/vendor/libgit2/src/filter.h +24 -5
- data/vendor/libgit2/src/futils.c +8 -8
- data/vendor/libgit2/src/futils.h +4 -4
- data/vendor/libgit2/src/graph.c +64 -9
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
- data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
- data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
- data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
- data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
- data/vendor/libgit2/src/hash.c +16 -13
- data/vendor/libgit2/src/hash.h +1 -1
- data/vendor/libgit2/src/hashsig.c +23 -10
- data/vendor/libgit2/src/ident.c +13 -3
- data/vendor/libgit2/src/idxmap.c +0 -22
- data/vendor/libgit2/src/ignore.c +35 -19
- data/vendor/libgit2/src/index.c +126 -84
- data/vendor/libgit2/src/index.h +1 -1
- data/vendor/libgit2/src/indexer.c +60 -36
- data/vendor/libgit2/src/integer.h +79 -2
- data/vendor/libgit2/src/iterator.c +40 -28
- data/vendor/libgit2/src/iterator.h +1 -1
- data/vendor/libgit2/src/khash.h +2 -11
- data/vendor/libgit2/src/{settings.c → libgit2.c} +125 -49
- data/vendor/libgit2/src/libgit2.h +15 -0
- data/vendor/libgit2/src/mailmap.c +23 -10
- data/vendor/libgit2/src/map.h +3 -3
- data/vendor/libgit2/src/merge.c +108 -46
- data/vendor/libgit2/src/merge.h +2 -1
- data/vendor/libgit2/src/merge_driver.c +19 -13
- data/vendor/libgit2/src/merge_file.c +15 -9
- data/vendor/libgit2/src/message.c +3 -1
- data/vendor/libgit2/src/midx.c +879 -0
- data/vendor/libgit2/src/midx.h +110 -0
- data/vendor/libgit2/src/mwindow.c +214 -95
- data/vendor/libgit2/src/mwindow.h +3 -3
- data/vendor/libgit2/src/net.c +133 -4
- data/vendor/libgit2/src/net.h +16 -2
- data/vendor/libgit2/src/netops.c +6 -4
- data/vendor/libgit2/src/netops.h +2 -2
- data/vendor/libgit2/src/notes.c +10 -10
- data/vendor/libgit2/src/object.c +24 -15
- data/vendor/libgit2/src/odb.c +298 -57
- data/vendor/libgit2/src/odb.h +16 -2
- data/vendor/libgit2/src/odb_loose.c +31 -21
- data/vendor/libgit2/src/odb_mempack.c +3 -1
- data/vendor/libgit2/src/odb_pack.c +391 -114
- data/vendor/libgit2/src/oid.c +7 -4
- data/vendor/libgit2/src/pack-objects.c +83 -69
- data/vendor/libgit2/src/pack.c +383 -150
- data/vendor/libgit2/src/pack.h +44 -9
- data/vendor/libgit2/src/patch.c +14 -7
- data/vendor/libgit2/src/patch_generate.c +3 -5
- data/vendor/libgit2/src/patch_parse.c +6 -3
- data/vendor/libgit2/src/path.c +102 -57
- data/vendor/libgit2/src/path.h +79 -6
- data/vendor/libgit2/src/pathspec.c +12 -11
- data/vendor/libgit2/src/pool.c +34 -22
- data/vendor/libgit2/src/pool.h +9 -1
- data/vendor/libgit2/src/posix.c +43 -12
- data/vendor/libgit2/src/posix.h +9 -0
- data/vendor/libgit2/src/proxy.c +2 -0
- data/vendor/libgit2/src/push.c +2 -0
- data/vendor/libgit2/src/reader.c +10 -6
- data/vendor/libgit2/src/rebase.c +95 -49
- data/vendor/libgit2/src/refdb.c +165 -13
- data/vendor/libgit2/src/refdb.h +69 -0
- data/vendor/libgit2/src/refdb_fs.c +144 -152
- data/vendor/libgit2/src/reflog.c +21 -20
- data/vendor/libgit2/src/refs.c +151 -231
- data/vendor/libgit2/src/refs.h +2 -20
- data/vendor/libgit2/src/refspec.c +80 -44
- data/vendor/libgit2/src/regexp.c +2 -2
- data/vendor/libgit2/src/remote.c +312 -121
- data/vendor/libgit2/src/remote.h +2 -1
- data/vendor/libgit2/src/repository.c +351 -189
- data/vendor/libgit2/src/repository.h +23 -29
- data/vendor/libgit2/src/reset.c +7 -6
- data/vendor/libgit2/src/revert.c +8 -2
- data/vendor/libgit2/src/revparse.c +19 -13
- data/vendor/libgit2/src/revwalk.c +35 -20
- data/vendor/libgit2/src/runtime.c +162 -0
- data/vendor/libgit2/src/runtime.h +62 -0
- data/vendor/libgit2/src/{refdb_fs.h → settings.h} +3 -11
- data/vendor/libgit2/src/signature.c +6 -5
- data/vendor/libgit2/src/sortedcache.c +2 -3
- data/vendor/libgit2/src/sortedcache.h +10 -8
- data/vendor/libgit2/src/stash.c +7 -3
- data/vendor/libgit2/src/status.c +9 -4
- data/vendor/libgit2/src/strarray.c +64 -0
- data/vendor/libgit2/src/streams/mbedtls.c +14 -17
- data/vendor/libgit2/src/streams/mbedtls.h +1 -1
- data/vendor/libgit2/src/streams/openssl.c +113 -207
- data/vendor/libgit2/src/streams/openssl.h +9 -1
- data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
- data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
- data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
- data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
- data/vendor/libgit2/src/streams/registry.c +10 -9
- data/vendor/libgit2/src/streams/socket.c +6 -2
- data/vendor/libgit2/src/streams/stransport.c +6 -3
- data/vendor/libgit2/src/streams/tls.c +5 -3
- data/vendor/libgit2/src/submodule.c +134 -66
- data/vendor/libgit2/src/submodule.h +9 -9
- data/vendor/libgit2/src/sysdir.c +8 -26
- data/vendor/libgit2/src/sysdir.h +0 -11
- data/vendor/libgit2/src/tag.c +49 -11
- data/vendor/libgit2/src/thread.c +140 -0
- data/vendor/libgit2/src/thread.h +479 -0
- data/vendor/libgit2/src/threadstate.c +83 -0
- data/vendor/libgit2/src/threadstate.h +24 -0
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +17 -13
- data/vendor/libgit2/src/transaction.c +21 -9
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +1 -1
- data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
- data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
- data/vendor/libgit2/src/transports/credential.c +17 -7
- data/vendor/libgit2/src/transports/credential_helpers.c +2 -0
- data/vendor/libgit2/src/transports/git.c +1 -3
- data/vendor/libgit2/src/transports/http.c +19 -17
- data/vendor/libgit2/src/transports/http.h +1 -0
- data/vendor/libgit2/src/transports/httpclient.c +84 -42
- data/vendor/libgit2/src/transports/httpclient.h +1 -1
- data/vendor/libgit2/src/transports/local.c +5 -5
- data/vendor/libgit2/src/transports/smart.c +14 -9
- data/vendor/libgit2/src/transports/smart.h +1 -1
- data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
- data/vendor/libgit2/src/transports/ssh.c +51 -17
- data/vendor/libgit2/src/transports/winhttp.c +156 -88
- data/vendor/libgit2/src/tree.c +100 -77
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/tsort.c +0 -2
- data/vendor/libgit2/src/unix/map.c +3 -1
- data/vendor/libgit2/src/unix/posix.h +16 -1
- data/vendor/libgit2/src/unix/pthread.h +2 -1
- data/vendor/libgit2/src/utf8.c +150 -0
- data/vendor/libgit2/src/utf8.h +52 -0
- data/vendor/libgit2/src/util.c +74 -183
- data/vendor/libgit2/src/util.h +33 -39
- data/vendor/libgit2/src/vector.c +23 -19
- data/vendor/libgit2/src/vector.h +4 -2
- data/vendor/libgit2/src/win32/findfile.c +4 -2
- data/vendor/libgit2/src/win32/git2.rc +18 -3
- data/vendor/libgit2/src/win32/map.c +1 -1
- data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
- data/vendor/libgit2/src/win32/path_w32.c +23 -25
- data/vendor/libgit2/src/win32/path_w32.h +0 -1
- data/vendor/libgit2/src/win32/posix_w32.c +77 -1
- data/vendor/libgit2/src/win32/precompiled.h +0 -1
- data/vendor/libgit2/src/win32/reparse.h +4 -4
- data/vendor/libgit2/src/win32/thread.c +24 -15
- data/vendor/libgit2/src/win32/thread.h +1 -1
- data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
- data/vendor/libgit2/src/win32/w32_common.h +18 -9
- data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
- data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
- data/vendor/libgit2/src/win32/w32_util.h +6 -6
- data/vendor/libgit2/src/worktree.c +37 -15
- data/vendor/libgit2/src/zstream.c +1 -1
- metadata +56 -38
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +0 -29
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +0 -96
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
- data/vendor/libgit2/src/buf_text.c +0 -316
- data/vendor/libgit2/src/buf_text.h +0 -122
- data/vendor/libgit2/src/global.c +0 -361
- data/vendor/libgit2/src/global.h +0 -41
- data/vendor/libgit2/src/thread-utils.c +0 -58
- data/vendor/libgit2/src/thread-utils.h +0 -246
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
- data/vendor/libgit2/src/win32/w32_stack.c +0 -188
- data/vendor/libgit2/src/win32/w32_stack.h +0 -140
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
#include "crypt.h"
|
|
15
15
|
#include "compat.h"
|
|
16
16
|
|
|
17
|
+
#define NTLM_UNUSED(x) ((void)(x))
|
|
18
|
+
|
|
17
19
|
#define NTLM_LM_RESPONSE_LEN 24
|
|
18
20
|
#define NTLM_NTLM_RESPONSE_LEN 24
|
|
19
21
|
#define NTLM_NTLM_HASH_LEN 16
|
|
@@ -66,9 +68,11 @@ struct ntlm_client {
|
|
|
66
68
|
|
|
67
69
|
ntlm_state state;
|
|
68
70
|
|
|
69
|
-
/*
|
|
70
|
-
|
|
71
|
-
ntlm_unicode_ctx
|
|
71
|
+
/* subsystem contexts */
|
|
72
|
+
ntlm_crypt_ctx crypt_ctx;
|
|
73
|
+
ntlm_unicode_ctx unicode_ctx;
|
|
74
|
+
int crypt_initialized : 1,
|
|
75
|
+
unicode_initialized : 1;
|
|
72
76
|
|
|
73
77
|
/* error message as set by the library */
|
|
74
78
|
const char *errmsg;
|
|
@@ -85,24 +89,24 @@ struct ntlm_client {
|
|
|
85
89
|
char *password;
|
|
86
90
|
|
|
87
91
|
/* strings as converted to utf16 */
|
|
92
|
+
char *hostname_utf16;
|
|
88
93
|
char *target_utf16;
|
|
89
94
|
char *username_utf16;
|
|
90
95
|
char *username_upper_utf16;
|
|
91
96
|
char *userdomain_utf16;
|
|
92
|
-
char *hostname_utf16;
|
|
93
97
|
char *password_utf16;
|
|
94
98
|
|
|
95
|
-
|
|
96
|
-
uint64_t nonce;
|
|
97
|
-
uint64_t timestamp;
|
|
98
|
-
|
|
99
|
+
size_t hostname_utf16_len;
|
|
99
100
|
size_t username_utf16_len;
|
|
100
101
|
size_t username_upper_utf16_len;
|
|
101
102
|
size_t userdomain_utf16_len;
|
|
102
|
-
size_t hostname_utf16_len;
|
|
103
103
|
size_t password_utf16_len;
|
|
104
104
|
size_t target_utf16_len;
|
|
105
105
|
|
|
106
|
+
/* timestamp and nonce; only for debugging */
|
|
107
|
+
uint64_t nonce;
|
|
108
|
+
uint64_t timestamp;
|
|
109
|
+
|
|
106
110
|
unsigned char lm_response[NTLM_LM_RESPONSE_LEN];
|
|
107
111
|
size_t lm_response_len;
|
|
108
112
|
|
|
@@ -15,13 +15,26 @@
|
|
|
15
15
|
extern "C" {
|
|
16
16
|
#endif
|
|
17
17
|
|
|
18
|
-
#define NTLM_CLIENT_VERSION "0.0
|
|
18
|
+
#define NTLM_CLIENT_VERSION "0.9.0"
|
|
19
19
|
#define NTLM_CLIENT_VERSION_MAJOR 0
|
|
20
|
-
#define NTLM_CLIENT_VERSION_MINOR
|
|
21
|
-
#define NTLM_CLIENT_VERSION_TEENY
|
|
20
|
+
#define NTLM_CLIENT_VERSION_MINOR 9
|
|
21
|
+
#define NTLM_CLIENT_VERSION_TEENY 0
|
|
22
22
|
|
|
23
23
|
typedef struct ntlm_client ntlm_client;
|
|
24
24
|
|
|
25
|
+
typedef enum {
|
|
26
|
+
/**
|
|
27
|
+
* An error occurred; more details are available by querying
|
|
28
|
+
* `ntlm_client_errmsg`.
|
|
29
|
+
*/
|
|
30
|
+
NTLM_CLIENT_ERROR = -1,
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The input provided to the function is missing or invalid.
|
|
34
|
+
*/
|
|
35
|
+
NTLM_CLIENT_ERROR_INVALID_INPUT = -2,
|
|
36
|
+
} ntlm_error_code;
|
|
37
|
+
|
|
25
38
|
/*
|
|
26
39
|
* Flags for initializing the `ntlm_client` context. A combination of
|
|
27
40
|
* these flags can be provided to `ntlm_client_init`.
|
|
@@ -11,26 +11,32 @@
|
|
|
11
11
|
|
|
12
12
|
#include "compat.h"
|
|
13
13
|
|
|
14
|
+
#ifdef UNICODE_ICONV
|
|
15
|
+
# include "unicode_iconv.h"
|
|
16
|
+
#elif UNICODE_BUILTIN
|
|
17
|
+
# include "unicode_builtin.h"
|
|
18
|
+
#endif
|
|
19
|
+
|
|
14
20
|
#define NTLM_UNICODE_MAX_LEN 2048
|
|
15
21
|
|
|
16
22
|
typedef struct ntlm_unicode_ctx ntlm_unicode_ctx;
|
|
17
23
|
|
|
18
|
-
extern
|
|
24
|
+
extern bool ntlm_unicode_init(ntlm_client *ntlm);
|
|
19
25
|
|
|
20
26
|
bool ntlm_unicode_utf8_to_16(
|
|
21
27
|
char **converted,
|
|
22
28
|
size_t *converted_len,
|
|
23
|
-
|
|
29
|
+
ntlm_client *ntlm,
|
|
24
30
|
const char *string,
|
|
25
31
|
size_t string_len);
|
|
26
32
|
|
|
27
33
|
bool ntlm_unicode_utf16_to_8(
|
|
28
34
|
char **converted,
|
|
29
35
|
size_t *converted_len,
|
|
30
|
-
|
|
36
|
+
ntlm_client *ntlm,
|
|
31
37
|
const char *string,
|
|
32
38
|
size_t string_len);
|
|
33
39
|
|
|
34
|
-
extern void
|
|
40
|
+
extern void ntlm_unicode_shutdown(ntlm_client *ntlm);
|
|
35
41
|
|
|
36
42
|
#endif /* PRIVATE_UNICODE_H__ */
|
|
@@ -13,10 +13,6 @@
|
|
|
13
13
|
#include "unicode.h"
|
|
14
14
|
#include "compat.h"
|
|
15
15
|
|
|
16
|
-
struct ntlm_unicode_ctx {
|
|
17
|
-
ntlm_client *ntlm;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
16
|
typedef unsigned int UTF32; /* at least 32 bits */
|
|
21
17
|
typedef unsigned short UTF16; /* at least 16 bits */
|
|
22
18
|
typedef unsigned char UTF8; /* typically 8 bits */
|
|
@@ -281,15 +277,10 @@ static ConversionResult ConvertUTF8toUTF16 (
|
|
|
281
277
|
}
|
|
282
278
|
|
|
283
279
|
|
|
284
|
-
|
|
280
|
+
bool ntlm_unicode_init(ntlm_client *ntlm)
|
|
285
281
|
{
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
if ((ctx = malloc(sizeof(ntlm_unicode_ctx))) == NULL)
|
|
289
|
-
return NULL;
|
|
290
|
-
|
|
291
|
-
ctx->ntlm = ntlm;
|
|
292
|
-
return ctx;
|
|
282
|
+
NTLM_UNUSED(ntlm);
|
|
283
|
+
return true;
|
|
293
284
|
}
|
|
294
285
|
|
|
295
286
|
typedef enum {
|
|
@@ -300,7 +291,7 @@ typedef enum {
|
|
|
300
291
|
static inline bool unicode_builtin_encoding_convert(
|
|
301
292
|
char **converted,
|
|
302
293
|
size_t *converted_len,
|
|
303
|
-
|
|
294
|
+
ntlm_client *ntlm,
|
|
304
295
|
const char *string,
|
|
305
296
|
size_t string_len,
|
|
306
297
|
unicode_builtin_encoding_direction direction)
|
|
@@ -332,7 +323,7 @@ static inline bool unicode_builtin_encoding_convert(
|
|
|
332
323
|
out_size = (out_size + 7) & ~7;
|
|
333
324
|
|
|
334
325
|
if ((out = malloc(out_size)) == NULL) {
|
|
335
|
-
ntlm_client_set_errmsg(
|
|
326
|
+
ntlm_client_set_errmsg(ntlm, "out of memory");
|
|
336
327
|
return false;
|
|
337
328
|
}
|
|
338
329
|
|
|
@@ -358,17 +349,17 @@ static inline bool unicode_builtin_encoding_convert(
|
|
|
358
349
|
success = true;
|
|
359
350
|
goto done;
|
|
360
351
|
case sourceExhausted:
|
|
361
|
-
ntlm_client_set_errmsg(
|
|
352
|
+
ntlm_client_set_errmsg(ntlm,
|
|
362
353
|
"invalid unicode string; trailing data remains");
|
|
363
354
|
goto done;
|
|
364
355
|
case targetExhausted:
|
|
365
356
|
break;
|
|
366
357
|
case sourceIllegal:
|
|
367
|
-
ntlm_client_set_errmsg(
|
|
358
|
+
ntlm_client_set_errmsg(ntlm,
|
|
368
359
|
"invalid unicode string; trailing data remains");
|
|
369
360
|
goto done;
|
|
370
361
|
default:
|
|
371
|
-
ntlm_client_set_errmsg(
|
|
362
|
+
ntlm_client_set_errmsg(ntlm,
|
|
372
363
|
"unknown unicode conversion failure");
|
|
373
364
|
goto done;
|
|
374
365
|
}
|
|
@@ -377,13 +368,12 @@ static inline bool unicode_builtin_encoding_convert(
|
|
|
377
368
|
out_size = ((((out_size << 1) - (out_size >> 1)) + 7) & ~7);
|
|
378
369
|
|
|
379
370
|
if (out_size > NTLM_UNICODE_MAX_LEN) {
|
|
380
|
-
ntlm_client_set_errmsg(
|
|
381
|
-
"unicode conversion too large");
|
|
371
|
+
ntlm_client_set_errmsg(ntlm, "unicode conversion too large");
|
|
382
372
|
goto done;
|
|
383
373
|
}
|
|
384
374
|
|
|
385
375
|
if ((new_out = realloc(out, out_size)) == NULL) {
|
|
386
|
-
ntlm_client_set_errmsg(
|
|
376
|
+
ntlm_client_set_errmsg(ntlm, "out of memory");
|
|
387
377
|
goto done;
|
|
388
378
|
}
|
|
389
379
|
|
|
@@ -419,27 +409,26 @@ done:
|
|
|
419
409
|
bool ntlm_unicode_utf8_to_16(
|
|
420
410
|
char **converted,
|
|
421
411
|
size_t *converted_len,
|
|
422
|
-
|
|
412
|
+
ntlm_client *client,
|
|
423
413
|
const char *string,
|
|
424
414
|
size_t string_len)
|
|
425
415
|
{
|
|
426
416
|
return unicode_builtin_encoding_convert(converted, converted_len,
|
|
427
|
-
|
|
417
|
+
client, string, string_len, unicode_builtin_utf8_to_16);
|
|
428
418
|
}
|
|
429
419
|
|
|
430
420
|
bool ntlm_unicode_utf16_to_8(
|
|
431
421
|
char **converted,
|
|
432
422
|
size_t *converted_len,
|
|
433
|
-
|
|
423
|
+
ntlm_client *client,
|
|
434
424
|
const char *string,
|
|
435
425
|
size_t string_len)
|
|
436
426
|
{
|
|
437
427
|
return unicode_builtin_encoding_convert(converted, converted_len,
|
|
438
|
-
|
|
428
|
+
client, string, string_len, unicode_builtin_utf16_to_8);
|
|
439
429
|
}
|
|
440
430
|
|
|
441
|
-
void
|
|
431
|
+
void ntlm_unicode_shutdown(ntlm_client *ntlm)
|
|
442
432
|
{
|
|
443
|
-
|
|
444
|
-
free(ctx);
|
|
433
|
+
NTLM_UNUSED(ntlm);
|
|
445
434
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Edward Thomson. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of ntlmclient, distributed under the MIT license.
|
|
5
|
+
* For full terms and copyright information, and for third-party
|
|
6
|
+
* copyright information, see the included LICENSE.txt file.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#ifndef PRIVATE_UNICODE_BUILTIN_H__
|
|
10
|
+
#define PRIVATE_UNICODE_BUILTIN_H__
|
|
11
|
+
|
|
12
|
+
#include <locale.h>
|
|
13
|
+
#include <iconv.h>
|
|
14
|
+
|
|
15
|
+
#include "ntlmclient.h"
|
|
16
|
+
|
|
17
|
+
struct ntlm_unicode_ctx {
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
#endif /* PRIVATE_UNICODE_BUILTIN_H__ */
|
|
@@ -16,43 +16,23 @@
|
|
|
16
16
|
#include "ntlm.h"
|
|
17
17
|
#include "compat.h"
|
|
18
18
|
|
|
19
|
-
struct ntlm_unicode_ctx {
|
|
20
|
-
ntlm_client *ntlm;
|
|
21
|
-
iconv_t utf8_to_16;
|
|
22
|
-
iconv_t utf16_to_8;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
ntlm_unicode_ctx *ntlm_unicode_ctx_init(ntlm_client *ntlm)
|
|
26
|
-
{
|
|
27
|
-
ntlm_unicode_ctx *ctx;
|
|
28
|
-
|
|
29
|
-
if ((ctx = calloc(1, sizeof(ntlm_unicode_ctx))) == NULL)
|
|
30
|
-
return NULL;
|
|
31
|
-
|
|
32
|
-
ctx->ntlm = ntlm;
|
|
33
|
-
ctx->utf8_to_16 = (iconv_t)-1;
|
|
34
|
-
ctx->utf16_to_8 = (iconv_t)-1;
|
|
35
|
-
|
|
36
|
-
return ctx;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
19
|
typedef enum {
|
|
40
20
|
unicode_iconv_utf8_to_16,
|
|
41
21
|
unicode_iconv_utf16_to_8
|
|
42
22
|
} unicode_iconv_encoding_direction;
|
|
43
23
|
|
|
44
|
-
|
|
24
|
+
bool ntlm_unicode_init(ntlm_client *ntlm)
|
|
45
25
|
{
|
|
46
|
-
|
|
47
|
-
|
|
26
|
+
ntlm->unicode_ctx.utf8_to_16 = iconv_open("UTF-16LE", "UTF-8");
|
|
27
|
+
ntlm->unicode_ctx.utf16_to_8 = iconv_open("UTF-8", "UTF-16LE");
|
|
48
28
|
|
|
49
|
-
if (
|
|
50
|
-
|
|
29
|
+
if (ntlm->unicode_ctx.utf8_to_16 == (iconv_t)-1 ||
|
|
30
|
+
ntlm->unicode_ctx.utf16_to_8 == (iconv_t)-1) {
|
|
51
31
|
if (errno == EINVAL)
|
|
52
|
-
ntlm_client_set_errmsg(
|
|
32
|
+
ntlm_client_set_errmsg(ntlm,
|
|
53
33
|
"iconv does not support UTF8 <-> UTF16 conversion");
|
|
54
34
|
else
|
|
55
|
-
ntlm_client_set_errmsg(
|
|
35
|
+
ntlm_client_set_errmsg(ntlm, strerror(errno));
|
|
56
36
|
|
|
57
37
|
return false;
|
|
58
38
|
}
|
|
@@ -63,7 +43,7 @@ static inline bool unicode_iconv_init(ntlm_unicode_ctx *ctx)
|
|
|
63
43
|
static inline bool unicode_iconv_encoding_convert(
|
|
64
44
|
char **converted,
|
|
65
45
|
size_t *converted_len,
|
|
66
|
-
|
|
46
|
+
ntlm_client *ntlm,
|
|
67
47
|
const char *string,
|
|
68
48
|
size_t string_len,
|
|
69
49
|
unicode_iconv_encoding_direction direction)
|
|
@@ -75,9 +55,6 @@ static inline bool unicode_iconv_encoding_convert(
|
|
|
75
55
|
*converted = NULL;
|
|
76
56
|
*converted_len = 0;
|
|
77
57
|
|
|
78
|
-
if (!unicode_iconv_init(ctx))
|
|
79
|
-
return false;
|
|
80
|
-
|
|
81
58
|
/*
|
|
82
59
|
* When translating UTF8 to UTF16, these strings are only used
|
|
83
60
|
* internally, and we obey the given length, so we can simply
|
|
@@ -86,11 +63,11 @@ static inline bool unicode_iconv_encoding_convert(
|
|
|
86
63
|
* terminate and expect an extra byte for UTF8, two for UTF16.
|
|
87
64
|
*/
|
|
88
65
|
if (direction == unicode_iconv_utf8_to_16) {
|
|
89
|
-
converter =
|
|
66
|
+
converter = ntlm->unicode_ctx.utf8_to_16;
|
|
90
67
|
out_size = (string_len * 2) + 2;
|
|
91
68
|
nul_size = 2;
|
|
92
69
|
} else {
|
|
93
|
-
converter =
|
|
70
|
+
converter = ntlm->unicode_ctx.utf16_to_8;
|
|
94
71
|
out_size = (string_len / 2) + 1;
|
|
95
72
|
nul_size = 1;
|
|
96
73
|
}
|
|
@@ -99,7 +76,7 @@ static inline bool unicode_iconv_encoding_convert(
|
|
|
99
76
|
out_size = (out_size + 7) & ~7;
|
|
100
77
|
|
|
101
78
|
if ((out = malloc(out_size)) == NULL) {
|
|
102
|
-
ntlm_client_set_errmsg(
|
|
79
|
+
ntlm_client_set_errmsg(ntlm, "out of memory");
|
|
103
80
|
return false;
|
|
104
81
|
}
|
|
105
82
|
|
|
@@ -117,7 +94,7 @@ static inline bool unicode_iconv_encoding_convert(
|
|
|
117
94
|
break;
|
|
118
95
|
|
|
119
96
|
if (ret == (size_t)-1 && errno != E2BIG) {
|
|
120
|
-
ntlm_client_set_errmsg(
|
|
97
|
+
ntlm_client_set_errmsg(ntlm, strerror(errno));
|
|
121
98
|
goto on_error;
|
|
122
99
|
}
|
|
123
100
|
|
|
@@ -125,13 +102,12 @@ static inline bool unicode_iconv_encoding_convert(
|
|
|
125
102
|
out_size = ((((out_size << 1) - (out_size >> 1)) + 7) & ~7);
|
|
126
103
|
|
|
127
104
|
if (out_size > NTLM_UNICODE_MAX_LEN) {
|
|
128
|
-
ntlm_client_set_errmsg(
|
|
129
|
-
"unicode conversion too large");
|
|
105
|
+
ntlm_client_set_errmsg(ntlm, "unicode conversion too large");
|
|
130
106
|
goto on_error;
|
|
131
107
|
}
|
|
132
108
|
|
|
133
109
|
if ((new_out = realloc(out, out_size)) == NULL) {
|
|
134
|
-
ntlm_client_set_errmsg(
|
|
110
|
+
ntlm_client_set_errmsg(ntlm, "out of memory");
|
|
135
111
|
goto on_error;
|
|
136
112
|
}
|
|
137
113
|
|
|
@@ -139,7 +115,7 @@ static inline bool unicode_iconv_encoding_convert(
|
|
|
139
115
|
}
|
|
140
116
|
|
|
141
117
|
if (in_start_len != 0) {
|
|
142
|
-
ntlm_client_set_errmsg(
|
|
118
|
+
ntlm_client_set_errmsg(ntlm,
|
|
143
119
|
"invalid unicode string; trailing data remains");
|
|
144
120
|
goto on_error;
|
|
145
121
|
}
|
|
@@ -165,37 +141,37 @@ on_error:
|
|
|
165
141
|
bool ntlm_unicode_utf8_to_16(
|
|
166
142
|
char **converted,
|
|
167
143
|
size_t *converted_len,
|
|
168
|
-
|
|
144
|
+
ntlm_client *ntlm,
|
|
169
145
|
const char *string,
|
|
170
146
|
size_t string_len)
|
|
171
147
|
{
|
|
172
148
|
return unicode_iconv_encoding_convert(
|
|
173
|
-
converted, converted_len,
|
|
149
|
+
converted, converted_len, ntlm, string, string_len,
|
|
174
150
|
unicode_iconv_utf8_to_16);
|
|
175
151
|
}
|
|
176
152
|
|
|
177
153
|
bool ntlm_unicode_utf16_to_8(
|
|
178
154
|
char **converted,
|
|
179
155
|
size_t *converted_len,
|
|
180
|
-
|
|
156
|
+
ntlm_client *ntlm,
|
|
181
157
|
const char *string,
|
|
182
158
|
size_t string_len)
|
|
183
159
|
{
|
|
184
160
|
return unicode_iconv_encoding_convert(
|
|
185
|
-
converted, converted_len,
|
|
161
|
+
converted, converted_len, ntlm, string, string_len,
|
|
186
162
|
unicode_iconv_utf16_to_8);
|
|
187
163
|
}
|
|
188
164
|
|
|
189
|
-
void
|
|
165
|
+
void ntlm_unicode_shutdown(ntlm_client *ntlm)
|
|
190
166
|
{
|
|
191
|
-
if (
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
if (ctx->utf16_to_8 != (iconv_t)-1)
|
|
195
|
-
iconv_close(ctx->utf16_to_8);
|
|
167
|
+
if (ntlm->unicode_ctx.utf16_to_8 != (iconv_t)0 &&
|
|
168
|
+
ntlm->unicode_ctx.utf16_to_8 != (iconv_t)-1)
|
|
169
|
+
iconv_close(ntlm->unicode_ctx.utf16_to_8);
|
|
196
170
|
|
|
197
|
-
if (
|
|
198
|
-
|
|
171
|
+
if (ntlm->unicode_ctx.utf8_to_16 != (iconv_t)0 &&
|
|
172
|
+
ntlm->unicode_ctx.utf8_to_16 != (iconv_t)-1)
|
|
173
|
+
iconv_close(ntlm->unicode_ctx.utf8_to_16);
|
|
199
174
|
|
|
200
|
-
|
|
175
|
+
ntlm->unicode_ctx.utf8_to_16 = (iconv_t)-1;
|
|
176
|
+
ntlm->unicode_ctx.utf16_to_8 = (iconv_t)-1;
|
|
201
177
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Edward Thomson. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of ntlmclient, distributed under the MIT license.
|
|
5
|
+
* For full terms and copyright information, and for third-party
|
|
6
|
+
* copyright information, see the included LICENSE.txt file.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
#ifndef PRIVATE_UNICODE_ICONV_H__
|
|
10
|
+
#define PRIVATE_UNICODE_ICONV_H__
|
|
11
|
+
|
|
12
|
+
#include <locale.h>
|
|
13
|
+
#include <iconv.h>
|
|
14
|
+
|
|
15
|
+
#include "ntlmclient.h"
|
|
16
|
+
|
|
17
|
+
struct ntlm_unicode_ctx {
|
|
18
|
+
iconv_t utf8_to_16;
|
|
19
|
+
iconv_t utf16_to_8;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
#endif /* PRIVATE_UNICODE_ICONV_H__ */
|