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.
Files changed (409) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rugged/version.rb +1 -1
  3. data/vendor/libgit2/AUTHORS +1 -0
  4. data/vendor/libgit2/CMakeLists.txt +99 -51
  5. data/vendor/libgit2/COPYING +28 -0
  6. data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
  7. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
  8. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
  9. data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
  10. data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
  11. data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
  12. data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
  13. data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
  14. data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
  15. data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
  16. data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
  17. data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
  18. data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
  19. data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
  20. data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
  21. data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
  22. data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
  23. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
  24. data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
  25. data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
  27. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
  28. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
  29. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
  30. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
  31. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
  32. data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
  33. data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
  34. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
  35. data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
  36. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
  37. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
  38. data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
  39. data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
  40. data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
  41. data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
  42. data/vendor/libgit2/deps/pcre/COPYING +5 -0
  43. data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  44. data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
  45. data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  46. data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
  47. data/vendor/libgit2/deps/pcre/config.h.in +57 -0
  48. data/vendor/libgit2/deps/pcre/pcre.h +641 -0
  49. data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
  50. data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
  51. data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
  52. data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
  53. data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
  54. data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
  55. data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
  56. data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
  57. data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
  58. data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
  59. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
  60. data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
  61. data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
  62. data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
  63. data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
  64. data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
  65. data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
  66. data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
  67. data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
  68. data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
  69. data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
  70. data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
  71. data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
  72. data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
  73. data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
  74. data/vendor/libgit2/deps/pcre/ucp.h +224 -0
  75. data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
  76. data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
  77. data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
  78. data/vendor/libgit2/deps/zlib/COPYING +27 -0
  79. data/vendor/libgit2/deps/zlib/adler32.c +0 -7
  80. data/vendor/libgit2/deps/zlib/crc32.c +0 -7
  81. data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
  82. data/vendor/libgit2/include/git2/apply.h +149 -0
  83. data/vendor/libgit2/include/git2/attr.h +20 -13
  84. data/vendor/libgit2/include/git2/blame.h +4 -4
  85. data/vendor/libgit2/include/git2/blob.h +44 -12
  86. data/vendor/libgit2/include/git2/buffer.h +20 -26
  87. data/vendor/libgit2/include/git2/cert.h +135 -0
  88. data/vendor/libgit2/include/git2/checkout.h +53 -21
  89. data/vendor/libgit2/include/git2/cherrypick.h +3 -3
  90. data/vendor/libgit2/include/git2/clone.h +5 -5
  91. data/vendor/libgit2/include/git2/commit.h +25 -3
  92. data/vendor/libgit2/include/git2/common.h +35 -10
  93. data/vendor/libgit2/include/git2/config.h +29 -19
  94. data/vendor/libgit2/include/git2/cred.h +308 -0
  95. data/vendor/libgit2/include/git2/deprecated.h +493 -0
  96. data/vendor/libgit2/include/git2/describe.h +4 -4
  97. data/vendor/libgit2/include/git2/diff.h +177 -135
  98. data/vendor/libgit2/include/git2/errors.h +53 -46
  99. data/vendor/libgit2/include/git2/filter.h +8 -0
  100. data/vendor/libgit2/include/git2/index.h +74 -52
  101. data/vendor/libgit2/include/git2/indexer.h +76 -6
  102. data/vendor/libgit2/include/git2/merge.h +25 -10
  103. data/vendor/libgit2/include/git2/net.h +0 -5
  104. data/vendor/libgit2/include/git2/notes.h +1 -1
  105. data/vendor/libgit2/include/git2/object.h +17 -29
  106. data/vendor/libgit2/include/git2/odb.h +12 -11
  107. data/vendor/libgit2/include/git2/odb_backend.h +10 -9
  108. data/vendor/libgit2/include/git2/oid.h +2 -2
  109. data/vendor/libgit2/include/git2/pack.h +14 -3
  110. data/vendor/libgit2/include/git2/proxy.h +5 -3
  111. data/vendor/libgit2/include/git2/rebase.h +46 -2
  112. data/vendor/libgit2/include/git2/refs.h +34 -16
  113. data/vendor/libgit2/include/git2/remote.h +111 -14
  114. data/vendor/libgit2/include/git2/repository.h +69 -34
  115. data/vendor/libgit2/include/git2/revert.h +1 -1
  116. data/vendor/libgit2/include/git2/revwalk.h +7 -7
  117. data/vendor/libgit2/include/git2/signature.h +2 -2
  118. data/vendor/libgit2/include/git2/stash.h +5 -5
  119. data/vendor/libgit2/include/git2/status.h +26 -17
  120. data/vendor/libgit2/include/git2/submodule.h +23 -6
  121. data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
  122. data/vendor/libgit2/include/git2/sys/commit.h +1 -1
  123. data/vendor/libgit2/include/git2/sys/config.h +13 -13
  124. data/vendor/libgit2/include/git2/sys/cred.h +90 -0
  125. data/vendor/libgit2/include/git2/sys/filter.h +6 -6
  126. data/vendor/libgit2/include/git2/sys/merge.h +3 -3
  127. data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
  128. data/vendor/libgit2/include/git2/sys/path.h +14 -5
  129. data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
  130. data/vendor/libgit2/include/git2/sys/repository.h +5 -1
  131. data/vendor/libgit2/include/git2/sys/stream.h +92 -12
  132. data/vendor/libgit2/include/git2/sys/transport.h +129 -83
  133. data/vendor/libgit2/include/git2/tag.h +13 -4
  134. data/vendor/libgit2/include/git2/trace.h +2 -2
  135. data/vendor/libgit2/include/git2/transport.h +11 -311
  136. data/vendor/libgit2/include/git2/tree.h +4 -4
  137. data/vendor/libgit2/include/git2/types.h +25 -106
  138. data/vendor/libgit2/include/git2/version.h +3 -3
  139. data/vendor/libgit2/include/git2/worktree.h +5 -5
  140. data/vendor/libgit2/include/git2.h +4 -0
  141. data/vendor/libgit2/src/CMakeLists.txt +104 -235
  142. data/vendor/libgit2/src/alloc.c +14 -18
  143. data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
  144. data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
  145. data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
  146. data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
  147. data/vendor/libgit2/src/annotated_commit.c +18 -11
  148. data/vendor/libgit2/src/apply.c +535 -28
  149. data/vendor/libgit2/src/apply.h +3 -1
  150. data/vendor/libgit2/src/array.h +2 -2
  151. data/vendor/libgit2/src/attr.c +77 -71
  152. data/vendor/libgit2/src/attr_file.c +203 -117
  153. data/vendor/libgit2/src/attr_file.h +9 -9
  154. data/vendor/libgit2/src/attrcache.c +49 -51
  155. data/vendor/libgit2/src/attrcache.h +2 -1
  156. data/vendor/libgit2/src/blame.c +38 -18
  157. data/vendor/libgit2/src/blame.h +1 -1
  158. data/vendor/libgit2/src/blame_git.c +29 -15
  159. data/vendor/libgit2/src/blob.c +123 -37
  160. data/vendor/libgit2/src/blob.h +19 -2
  161. data/vendor/libgit2/src/branch.c +47 -23
  162. data/vendor/libgit2/src/buf_text.c +7 -6
  163. data/vendor/libgit2/src/buffer.c +60 -53
  164. data/vendor/libgit2/src/cache.c +38 -45
  165. data/vendor/libgit2/src/cache.h +3 -3
  166. data/vendor/libgit2/src/cc-compat.h +20 -3
  167. data/vendor/libgit2/src/checkout.c +77 -67
  168. data/vendor/libgit2/src/cherrypick.c +12 -6
  169. data/vendor/libgit2/src/clone.c +36 -14
  170. data/vendor/libgit2/src/clone.h +4 -0
  171. data/vendor/libgit2/src/commit.c +103 -48
  172. data/vendor/libgit2/src/commit.h +7 -0
  173. data/vendor/libgit2/src/commit_list.c +36 -78
  174. data/vendor/libgit2/src/commit_list.h +2 -2
  175. data/vendor/libgit2/src/common.h +24 -90
  176. data/vendor/libgit2/src/config.c +203 -176
  177. data/vendor/libgit2/src/config.h +8 -20
  178. data/vendor/libgit2/src/config_backend.h +96 -0
  179. data/vendor/libgit2/src/config_cache.c +41 -35
  180. data/vendor/libgit2/src/config_entries.c +229 -0
  181. data/vendor/libgit2/src/config_entries.h +24 -0
  182. data/vendor/libgit2/src/config_file.c +422 -680
  183. data/vendor/libgit2/src/config_mem.c +220 -0
  184. data/vendor/libgit2/src/config_parse.c +96 -68
  185. data/vendor/libgit2/src/config_parse.h +15 -14
  186. data/vendor/libgit2/src/config_snapshot.c +206 -0
  187. data/vendor/libgit2/src/crlf.c +219 -196
  188. data/vendor/libgit2/src/delta.c +25 -18
  189. data/vendor/libgit2/src/describe.c +42 -41
  190. data/vendor/libgit2/src/diff.c +52 -67
  191. data/vendor/libgit2/src/diff.h +2 -1
  192. data/vendor/libgit2/src/diff_driver.c +44 -46
  193. data/vendor/libgit2/src/diff_file.c +16 -14
  194. data/vendor/libgit2/src/diff_file.h +1 -1
  195. data/vendor/libgit2/src/diff_generate.c +158 -103
  196. data/vendor/libgit2/src/diff_generate.h +3 -3
  197. data/vendor/libgit2/src/diff_parse.c +4 -4
  198. data/vendor/libgit2/src/diff_print.c +34 -22
  199. data/vendor/libgit2/src/diff_stats.c +22 -7
  200. data/vendor/libgit2/src/diff_tform.c +18 -16
  201. data/vendor/libgit2/src/diff_xdiff.c +3 -3
  202. data/vendor/libgit2/src/errors.c +51 -39
  203. data/vendor/libgit2/src/errors.h +81 -0
  204. data/vendor/libgit2/src/features.h.in +9 -3
  205. data/vendor/libgit2/src/fetch.c +8 -3
  206. data/vendor/libgit2/src/fetchhead.c +12 -12
  207. data/vendor/libgit2/src/filebuf.c +28 -32
  208. data/vendor/libgit2/src/filebuf.h +2 -2
  209. data/vendor/libgit2/src/filter.c +47 -33
  210. data/vendor/libgit2/src/filter.h +0 -10
  211. data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
  212. data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
  213. data/vendor/libgit2/src/global.c +35 -55
  214. data/vendor/libgit2/src/global.h +0 -2
  215. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
  216. data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
  217. data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
  218. data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
  219. data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
  220. data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
  221. data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
  222. data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
  223. data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
  224. data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
  225. data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
  226. data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
  227. data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
  228. data/vendor/libgit2/src/hash/sha1.h +38 -0
  229. data/vendor/libgit2/src/hash.c +61 -0
  230. data/vendor/libgit2/src/hash.h +20 -21
  231. data/vendor/libgit2/src/hashsig.c +5 -5
  232. data/vendor/libgit2/src/idxmap.c +107 -61
  233. data/vendor/libgit2/src/idxmap.h +153 -31
  234. data/vendor/libgit2/src/ignore.c +38 -42
  235. data/vendor/libgit2/src/index.c +264 -199
  236. data/vendor/libgit2/src/index.h +7 -1
  237. data/vendor/libgit2/src/indexer.c +338 -167
  238. data/vendor/libgit2/src/integer.h +71 -26
  239. data/vendor/libgit2/src/iterator.c +134 -62
  240. data/vendor/libgit2/src/iterator.h +15 -0
  241. data/vendor/libgit2/src/mailmap.c +8 -8
  242. data/vendor/libgit2/src/map.h +1 -1
  243. data/vendor/libgit2/src/merge.c +137 -93
  244. data/vendor/libgit2/src/merge_driver.c +11 -11
  245. data/vendor/libgit2/src/merge_file.c +2 -2
  246. data/vendor/libgit2/src/mwindow.c +24 -29
  247. data/vendor/libgit2/src/mwindow.h +4 -4
  248. data/vendor/libgit2/src/net.c +184 -0
  249. data/vendor/libgit2/src/net.h +36 -0
  250. data/vendor/libgit2/src/netops.c +55 -156
  251. data/vendor/libgit2/src/netops.h +3 -23
  252. data/vendor/libgit2/src/notes.c +14 -9
  253. data/vendor/libgit2/src/object.c +120 -69
  254. data/vendor/libgit2/src/object.h +22 -9
  255. data/vendor/libgit2/src/object_api.c +8 -8
  256. data/vendor/libgit2/src/odb.c +111 -88
  257. data/vendor/libgit2/src/odb.h +8 -7
  258. data/vendor/libgit2/src/odb_loose.c +58 -47
  259. data/vendor/libgit2/src/odb_mempack.c +21 -34
  260. data/vendor/libgit2/src/odb_pack.c +17 -13
  261. data/vendor/libgit2/src/offmap.c +53 -35
  262. data/vendor/libgit2/src/offmap.h +108 -21
  263. data/vendor/libgit2/src/oid.c +12 -7
  264. data/vendor/libgit2/src/oidmap.c +49 -47
  265. data/vendor/libgit2/src/oidmap.h +101 -24
  266. data/vendor/libgit2/src/pack-objects.c +87 -86
  267. data/vendor/libgit2/src/pack-objects.h +2 -8
  268. data/vendor/libgit2/src/pack.c +94 -96
  269. data/vendor/libgit2/src/pack.h +16 -18
  270. data/vendor/libgit2/src/parse.c +17 -4
  271. data/vendor/libgit2/src/parse.h +3 -3
  272. data/vendor/libgit2/src/patch.c +3 -3
  273. data/vendor/libgit2/src/patch_generate.c +18 -18
  274. data/vendor/libgit2/src/patch_parse.c +147 -79
  275. data/vendor/libgit2/src/path.c +207 -62
  276. data/vendor/libgit2/src/path.h +14 -0
  277. data/vendor/libgit2/src/pathspec.c +18 -18
  278. data/vendor/libgit2/src/pool.c +26 -22
  279. data/vendor/libgit2/src/pool.h +7 -7
  280. data/vendor/libgit2/src/posix.c +10 -10
  281. data/vendor/libgit2/src/posix.h +12 -1
  282. data/vendor/libgit2/src/proxy.c +8 -3
  283. data/vendor/libgit2/src/push.c +35 -29
  284. data/vendor/libgit2/src/push.h +2 -1
  285. data/vendor/libgit2/src/reader.c +265 -0
  286. data/vendor/libgit2/src/reader.h +107 -0
  287. data/vendor/libgit2/src/rebase.c +97 -38
  288. data/vendor/libgit2/src/refdb.c +15 -3
  289. data/vendor/libgit2/src/refdb_fs.c +318 -222
  290. data/vendor/libgit2/src/reflog.c +13 -15
  291. data/vendor/libgit2/src/refs.c +122 -89
  292. data/vendor/libgit2/src/refs.h +5 -3
  293. data/vendor/libgit2/src/refspec.c +27 -33
  294. data/vendor/libgit2/src/regexp.c +221 -0
  295. data/vendor/libgit2/src/regexp.h +97 -0
  296. data/vendor/libgit2/src/remote.c +229 -178
  297. data/vendor/libgit2/src/remote.h +11 -2
  298. data/vendor/libgit2/src/repository.c +227 -172
  299. data/vendor/libgit2/src/repository.h +52 -40
  300. data/vendor/libgit2/src/reset.c +7 -7
  301. data/vendor/libgit2/src/revert.c +11 -6
  302. data/vendor/libgit2/src/revparse.c +46 -46
  303. data/vendor/libgit2/src/revwalk.c +89 -54
  304. data/vendor/libgit2/src/revwalk.h +20 -0
  305. data/vendor/libgit2/src/settings.c +22 -9
  306. data/vendor/libgit2/src/signature.c +15 -13
  307. data/vendor/libgit2/src/sortedcache.c +22 -36
  308. data/vendor/libgit2/src/sortedcache.h +1 -1
  309. data/vendor/libgit2/src/stash.c +56 -76
  310. data/vendor/libgit2/src/status.c +27 -21
  311. data/vendor/libgit2/src/stream.h +17 -2
  312. data/vendor/libgit2/src/streams/mbedtls.c +100 -80
  313. data/vendor/libgit2/src/streams/mbedtls.h +5 -2
  314. data/vendor/libgit2/src/streams/openssl.c +93 -81
  315. data/vendor/libgit2/src/streams/openssl.h +5 -2
  316. data/vendor/libgit2/src/streams/registry.c +118 -0
  317. data/vendor/libgit2/src/streams/registry.h +19 -0
  318. data/vendor/libgit2/src/streams/socket.c +55 -30
  319. data/vendor/libgit2/src/streams/stransport.c +57 -32
  320. data/vendor/libgit2/src/streams/stransport.h +5 -0
  321. data/vendor/libgit2/src/streams/tls.c +48 -20
  322. data/vendor/libgit2/src/streams/tls.h +12 -4
  323. data/vendor/libgit2/src/strmap.c +47 -74
  324. data/vendor/libgit2/src/strmap.h +108 -33
  325. data/vendor/libgit2/src/submodule.c +190 -169
  326. data/vendor/libgit2/src/submodule.h +1 -1
  327. data/vendor/libgit2/src/sysdir.c +25 -15
  328. data/vendor/libgit2/src/tag.c +39 -26
  329. data/vendor/libgit2/src/tag.h +2 -1
  330. data/vendor/libgit2/src/trace.c +2 -2
  331. data/vendor/libgit2/src/trace.h +2 -2
  332. data/vendor/libgit2/src/trailer.c +46 -32
  333. data/vendor/libgit2/src/transaction.c +30 -29
  334. data/vendor/libgit2/src/transport.c +3 -3
  335. data/vendor/libgit2/src/transports/auth.c +14 -10
  336. data/vendor/libgit2/src/transports/auth.h +10 -3
  337. data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
  338. data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
  339. data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
  340. data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
  341. data/vendor/libgit2/src/transports/cred.c +24 -24
  342. data/vendor/libgit2/src/transports/git.c +25 -30
  343. data/vendor/libgit2/src/transports/http.c +871 -335
  344. data/vendor/libgit2/src/transports/http.h +2 -0
  345. data/vendor/libgit2/src/transports/local.c +28 -28
  346. data/vendor/libgit2/src/transports/smart.c +64 -46
  347. data/vendor/libgit2/src/transports/smart.h +5 -6
  348. data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
  349. data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
  350. data/vendor/libgit2/src/transports/ssh.c +76 -65
  351. data/vendor/libgit2/src/transports/winhttp.c +328 -319
  352. data/vendor/libgit2/src/tree-cache.c +21 -14
  353. data/vendor/libgit2/src/tree.c +119 -112
  354. data/vendor/libgit2/src/tree.h +1 -0
  355. data/vendor/libgit2/src/unix/map.c +3 -3
  356. data/vendor/libgit2/src/unix/posix.h +1 -11
  357. data/vendor/libgit2/src/userdiff.h +3 -1
  358. data/vendor/libgit2/src/util.c +154 -93
  359. data/vendor/libgit2/src/util.h +19 -23
  360. data/vendor/libgit2/src/vector.c +15 -10
  361. data/vendor/libgit2/src/wildmatch.c +320 -0
  362. data/vendor/libgit2/src/wildmatch.h +23 -0
  363. data/vendor/libgit2/src/win32/dir.c +3 -3
  364. data/vendor/libgit2/src/win32/findfile.c +1 -1
  365. data/vendor/libgit2/src/win32/map.c +9 -11
  366. data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
  367. data/vendor/libgit2/src/win32/path_w32.c +113 -9
  368. data/vendor/libgit2/src/win32/path_w32.h +18 -29
  369. data/vendor/libgit2/src/win32/posix.h +1 -4
  370. data/vendor/libgit2/src/win32/posix_w32.c +69 -44
  371. data/vendor/libgit2/src/win32/precompiled.h +0 -2
  372. data/vendor/libgit2/src/win32/thread.c +5 -10
  373. data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
  374. data/vendor/libgit2/src/win32/w32_common.h +39 -0
  375. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
  376. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
  377. data/vendor/libgit2/src/win32/w32_stack.c +6 -11
  378. data/vendor/libgit2/src/win32/w32_stack.h +3 -3
  379. data/vendor/libgit2/src/win32/w32_util.c +27 -64
  380. data/vendor/libgit2/src/win32/w32_util.h +5 -49
  381. data/vendor/libgit2/src/worktree.c +44 -30
  382. data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
  383. data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
  384. data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
  385. data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
  386. data/vendor/libgit2/src/zstream.c +4 -4
  387. metadata +115 -38
  388. data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
  389. data/vendor/libgit2/deps/regex/config.h +0 -7
  390. data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
  391. data/vendor/libgit2/deps/regex/regex.c +0 -92
  392. data/vendor/libgit2/deps/regex/regex.h +0 -582
  393. data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
  394. data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
  395. data/vendor/libgit2/deps/regex/regexec.c +0 -4369
  396. data/vendor/libgit2/include/git2/inttypes.h +0 -309
  397. data/vendor/libgit2/include/git2/sys/time.h +0 -31
  398. data/vendor/libgit2/libgit2.pc.in +0 -13
  399. data/vendor/libgit2/src/config_file.h +0 -73
  400. data/vendor/libgit2/src/fnmatch.c +0 -248
  401. data/vendor/libgit2/src/fnmatch.h +0 -48
  402. data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
  403. data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
  404. data/vendor/libgit2/src/streams/curl.c +0 -385
  405. data/vendor/libgit2/src/streams/curl.h +0 -17
  406. /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
  407. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
  408. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
  409. /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
@@ -1,3 +1,5 @@
1
+ INCLUDE(FeatureSummary)
2
+
1
3
  CHECK_STRUCT_HAS_MEMBER ("struct stat" st_mtim "sys/types.h;sys/stat.h"
2
4
  HAVE_STRUCT_STAT_ST_MTIM LANGUAGE C)
3
5
  CHECK_STRUCT_HAS_MEMBER ("struct stat" st_mtimespec "sys/types.h;sys/stat.h"
@@ -17,4 +19,8 @@ ENDIF()
17
19
 
18
20
  IF (HAVE_STRUCT_STAT_NSEC OR WIN32)
19
21
  OPTION( USE_NSEC "Care about sub-second file mtimes and ctimes" ON )
22
+ ELSE()
23
+ SET(USE_NSEC OFF)
20
24
  ENDIF()
25
+
26
+ ADD_FEATURE_INFO(nanoseconds USE_NSEC "whether to use sub-second file mtimes and ctimes")
@@ -0,0 +1,110 @@
1
+ # pkg-config file generation
2
+ #
3
+ # Uses the following globals:
4
+ # - PKG_BUILD_PREFIX: the build location (aka prefix). Defaults to CMAKE_INSTALL_PREFIX
5
+ # - PKG_BUILD_LIBDIR: the libdir location. Defaults to ${prefix}/lib.
6
+ # - PKG_BUILD_INCLUDEDIR: the includedir location. Defaults to ${prefix}/include.
7
+ #
8
+
9
+ function(pkg_build_config)
10
+ set(options)
11
+ set(oneValueArgs NAME DESCRIPTION VERSION FILENAME LIBS_SELF)
12
+ set(multiValueArgs LIBS PRIVATE_LIBS REQUIRES CFLAGS)
13
+
14
+ cmake_parse_arguments(PKGCONFIG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
15
+
16
+ if (NOT DEFINED PKGCONFIG_FILENAME AND DEFINED PKGCONFIG_NAME)
17
+ set(PKGCONFIG_FILENAME ${PKGCONFIG_NAME})
18
+ endif()
19
+ if (NOT DEFINED PKGCONFIG_FILENAME)
20
+ message(FATAL_ERROR "Missing FILENAME argument")
21
+ endif()
22
+ set(PKGCONFIG_FILE "${PROJECT_BINARY_DIR}/${PKGCONFIG_FILENAME}.pc")
23
+
24
+ if (NOT DEFINED PKGCONFIG_DESCRIPTION)
25
+ message(FATAL_ERROR "Missing DESCRIPTION argument")
26
+ endif()
27
+
28
+ if (NOT DEFINED PKGCONFIG_VERSION)
29
+ message(FATAL_ERROR "Missing VERSION argument")
30
+ endif()
31
+
32
+ if (DEFINED PKG_BUILD_PREFIX)
33
+ set(PKGCONFIG_PREFIX "${PKG_BUILD_PREFIX}")
34
+ else()
35
+ set(PKGCONFIG_PREFIX "${CMAKE_INSTALL_PREFIX}")
36
+ endif()
37
+
38
+ if(DEFINED PKG_BUILD_LIBDIR)
39
+ if (IS_ABSOLUTE ${PKG_BUILD_LIBDIR})
40
+ set(PKGCONFIG_LIBDIR ${PKG_BUILD_LIBDIR})
41
+ else()
42
+ set(PKGCONFIG_LIBDIR "\${prefix}/${PKG_BUILD_LIBDIR}")
43
+ endif()
44
+ else()
45
+ set(PKGCONFIG_LIBDIR "\${prefix}/lib")
46
+ endif()
47
+
48
+ if(DEFINED PKG_BUILD_INCLUDEDIR)
49
+ if (IS_ABSOLUTE ${PKG_BUILD_INCLUDEDIR})
50
+ set(PKGCONFIG_INCLUDEDIR ${PKG_BUILD_INCLUDEDIR})
51
+ else()
52
+ set(PKGCONFIG_INCLUDEDIR "\${prefix}/${PKG_BUILD_INCLUDEDIR}")
53
+ endif()
54
+ else()
55
+ set(PKGCONFIG_INCLUDEDIR "\${prefix}/include")
56
+ endif()
57
+
58
+ # Write .pc "header"
59
+ file(WRITE "${PKGCONFIG_FILE}"
60
+ "prefix=\"${PKGCONFIG_PREFIX}\"\n"
61
+ "libdir=\"${PKGCONFIG_LIBDIR}\"\n"
62
+ "includedir=\"${PKGCONFIG_INCLUDEDIR}\"\n"
63
+ "\n"
64
+ "Name: ${PKGCONFIG_NAME}\n"
65
+ "Description: ${PKGCONFIG_DESCRIPTION}\n"
66
+ "Version: ${PKGCONFIG_VERSION}\n"
67
+ )
68
+
69
+ # Prepare Libs
70
+ if(NOT DEFINED PKGCONFIG_LIBS_SELF)
71
+ set(PKGCONFIG_LIBS_SELF "${PKGCONFIG_FILE}")
72
+ endif()
73
+
74
+ if(NOT DEFINED PKGCONFIG_LIBS)
75
+ set(PKGCONFIG_LIBS "-l${PKGCONFIG_LIBS_SELF}")
76
+ else()
77
+ list(INSERT PKGCONFIG_LIBS 0 "-l${PKGCONFIG_LIBS_SELF}")
78
+ endif()
79
+
80
+ list(REMOVE_DUPLICATES PKGCONFIG_LIBS)
81
+ string(REPLACE ";" " " PKGCONFIG_LIBS "${PKGCONFIG_LIBS}")
82
+ file(APPEND "${PKGCONFIG_FILE}" "Libs: -L\${libdir} ${PKGCONFIG_LIBS}\n")
83
+
84
+ # Prepare Libs.private
85
+ if(DEFINED PKGCONFIG_PRIVATE_LIBS)
86
+ list(REMOVE_DUPLICATES PKGCONFIG_PRIVATE_LIBS)
87
+ string(REPLACE ";" " " PKGCONFIG_PRIVATE_LIBS "${PKGCONFIG_PRIVATE_LIBS}")
88
+ file(APPEND "${PKGCONFIG_FILE}" "Libs.private: ${PKGCONFIG_PRIVATE_LIBS}\n")
89
+ endif()
90
+
91
+ # Prepare Requires.private
92
+ if(DEFINED PKGCONFIG_REQUIRES)
93
+ list(REMOVE_DUPLICATES PKGCONFIG_REQUIRES)
94
+ string(REPLACE ";" " " PKGCONFIG_REQUIRES "${PKGCONFIG_REQUIRES}")
95
+ file(APPEND "${PKGCONFIG_FILE}" "Requires.private: ${PKGCONFIG_REQUIRES}\n")
96
+ endif()
97
+
98
+ # Prepare Cflags
99
+ if(DEFINED PKGCONFIG_CFLAGS)
100
+ string(REPLACE ";" " " PKGCONFIG_CFLAGS "${PKGCONFIG_CFLAGS}")
101
+ else()
102
+ set(PKGCONFIG_CFLAGS "")
103
+ endif()
104
+ file(APPEND "${PKGCONFIG_FILE}" "Cflags: -I\${includedir} ${PKGCONFIG_CFLAGS}\n")
105
+
106
+ # Install .pc file
107
+ install(FILES "${PKGCONFIG_FILE}"
108
+ DESTINATION "${PKGCONFIG_PREFIX}/${PKGCONFIG_LIBDIR}/pkgconfig"
109
+ )
110
+ endfunction()
@@ -0,0 +1,53 @@
1
+ # Select the backend to use
2
+
3
+ # We try to find any packages our backends might use
4
+
5
+ FIND_PACKAGE(GSSAPI)
6
+ IF (CMAKE_SYSTEM_NAME MATCHES "Darwin")
7
+ INCLUDE(FindGSSFramework)
8
+ ENDIF()
9
+
10
+ # Auto-select GSS backend
11
+ IF (USE_GSSAPI STREQUAL ON)
12
+ IF (GSSFRAMEWORK_FOUND)
13
+ SET(GSS_BACKEND "GSS.framework")
14
+ ELSEIF(GSSAPI_FOUND)
15
+ SET(GSS_BACKEND "gssapi")
16
+ ELSE()
17
+ MESSAGE(FATAL_ERROR "Unable to autodetect a usable GSS backend."
18
+ "Please pass the backend name explicitly (-DUSE_GSS=backend)")
19
+ ENDIF()
20
+ ELSEIF(USE_GSSAPI)
21
+ # Backend was explicitly set
22
+ SET(GSS_BACKEND ${USE_GSSAPI})
23
+ ELSE()
24
+ SET(GSS_BACKEND NO)
25
+ ENDIF()
26
+
27
+ IF(GSS_BACKEND)
28
+ # Check that we can find what's required for the selected backend
29
+ IF (GSS_BACKEND STREQUAL "GSS.framework")
30
+ IF (NOT GSSFRAMEWORK_FOUND)
31
+ MESSAGE(FATAL_ERROR "Asked for GSS.framework backend, but it wasn't found")
32
+ ENDIF()
33
+
34
+ LIST(APPEND LIBGIT2_LIBS ${GSSFRAMEWORK_LIBRARIES})
35
+
36
+ SET(GIT_GSSFRAMEWORK 1)
37
+ ADD_FEATURE_INFO(SPNEGO GIT_GSSFRAMEWORK "SPNEGO authentication support (${GSS_BACKEND})")
38
+ ELSEIF (GSS_BACKEND STREQUAL "gssapi")
39
+ IF (NOT GSSAPI_FOUND)
40
+ MESSAGE(FATAL_ERROR "Asked for gssapi GSS backend, but it wasn't found")
41
+ ENDIF()
42
+
43
+ LIST(APPEND LIBGIT2_LIBS ${GSSAPI_LIBRARIES})
44
+
45
+ SET(GIT_GSSAPI 1)
46
+ ADD_FEATURE_INFO(SPNEGO GIT_GSSAPI "SPNEGO authentication support (${GSS_BACKEND})")
47
+ ELSE()
48
+ MESSAGE(FATAL_ERROR "Asked for backend ${GSS_BACKEND} but it wasn't found")
49
+ ENDIF()
50
+ ELSE()
51
+ SET(GIT_GSSAPI 0)
52
+ ADD_FEATURE_INFO(SPNEGO NO "")
53
+ ENDIF()
@@ -0,0 +1,124 @@
1
+ # Select the backend to use
2
+
3
+ # We try to find any packages our backends might use
4
+ FIND_PACKAGE(OpenSSL)
5
+ FIND_PACKAGE(mbedTLS)
6
+ IF (CMAKE_SYSTEM_NAME MATCHES "Darwin")
7
+ FIND_PACKAGE(Security)
8
+ FIND_PACKAGE(CoreFoundation)
9
+ ENDIF()
10
+
11
+ # Auto-select TLS backend
12
+ IF (USE_HTTPS STREQUAL ON)
13
+ IF (SECURITY_FOUND)
14
+ IF (SECURITY_HAS_SSLCREATECONTEXT)
15
+ SET(HTTPS_BACKEND "SecureTransport")
16
+ ELSE()
17
+ MESSAGE(STATUS "Security framework is too old, falling back to OpenSSL")
18
+ SET(HTTPS_BACKEND "OpenSSL")
19
+ ENDIF()
20
+ ELSEIF (WINHTTP)
21
+ SET(HTTPS_BACKEND "WinHTTP")
22
+ ELSEIF(OPENSSL_FOUND)
23
+ SET(HTTPS_BACKEND "OpenSSL")
24
+ ELSEIF(MBEDTLS_FOUND)
25
+ SET(HTTPS_BACKEND "mbedTLS")
26
+ ELSE()
27
+ MESSAGE(FATAL_ERROR "Unable to autodetect a usable HTTPS backend."
28
+ "Please pass the backend name explicitly (-DUSE_HTTPS=backend)")
29
+ ENDIF()
30
+ ELSEIF(USE_HTTPS)
31
+ # HTTPS backend was explicitly set
32
+ SET(HTTPS_BACKEND ${USE_HTTPS})
33
+ ELSE()
34
+ SET(HTTPS_BACKEND NO)
35
+ ENDIF()
36
+
37
+ IF(HTTPS_BACKEND)
38
+ # Check that we can find what's required for the selected backend
39
+ IF (HTTPS_BACKEND STREQUAL "SecureTransport")
40
+ IF (NOT COREFOUNDATION_FOUND)
41
+ MESSAGE(FATAL_ERROR "Cannot use SecureTransport backend, CoreFoundation.framework not found")
42
+ ENDIF()
43
+ IF (NOT SECURITY_FOUND)
44
+ MESSAGE(FATAL_ERROR "Cannot use SecureTransport backend, Security.framework not found")
45
+ ENDIF()
46
+ IF (NOT SECURITY_HAS_SSLCREATECONTEXT)
47
+ MESSAGE(FATAL_ERROR "Cannot use SecureTransport backend, SSLCreateContext not supported")
48
+ ENDIF()
49
+
50
+ SET(GIT_SECURE_TRANSPORT 1)
51
+ LIST(APPEND LIBGIT2_SYSTEM_INCLUDES ${SECURITY_INCLUDE_DIR})
52
+ LIST(APPEND LIBGIT2_LIBS ${COREFOUNDATION_LDFLAGS} ${SECURITY_LDFLAGS})
53
+ LIST(APPEND LIBGIT2_PC_LIBS ${COREFOUNDATION_LDFLAGS} ${SECURITY_LDFLAGS})
54
+ ELSEIF (HTTPS_BACKEND STREQUAL "OpenSSL")
55
+ IF (NOT OPENSSL_FOUND)
56
+ MESSAGE(FATAL_ERROR "Asked for OpenSSL TLS backend, but it wasn't found")
57
+ ENDIF()
58
+
59
+ SET(GIT_OPENSSL 1)
60
+ LIST(APPEND LIBGIT2_SYSTEM_INCLUDES ${OPENSSL_INCLUDE_DIR})
61
+ LIST(APPEND LIBGIT2_LIBS ${OPENSSL_LIBRARIES})
62
+ LIST(APPEND LIBGIT2_PC_LIBS ${OPENSSL_LDFLAGS})
63
+ LIST(APPEND LIBGIT2_PC_REQUIRES "openssl")
64
+ ELSEIF(HTTPS_BACKEND STREQUAL "mbedTLS")
65
+ IF (NOT MBEDTLS_FOUND)
66
+ MESSAGE(FATAL_ERROR "Asked for mbedTLS backend, but it wasn't found")
67
+ ENDIF()
68
+
69
+ IF(NOT CERT_LOCATION)
70
+ MESSAGE(STATUS "Auto-detecting default certificates location")
71
+ IF(CMAKE_SYSTEM_NAME MATCHES Darwin)
72
+ # Check for an Homebrew installation
73
+ SET(OPENSSL_CMD "/usr/local/opt/openssl/bin/openssl")
74
+ ELSE()
75
+ SET(OPENSSL_CMD "openssl")
76
+ ENDIF()
77
+ EXECUTE_PROCESS(COMMAND ${OPENSSL_CMD} version -d OUTPUT_VARIABLE OPENSSL_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
78
+ IF(OPENSSL_DIR)
79
+ STRING(REGEX REPLACE "^OPENSSLDIR: \"(.*)\"$" "\\1/" OPENSSL_DIR ${OPENSSL_DIR})
80
+
81
+ SET(OPENSSL_CA_LOCATIONS
82
+ "ca-bundle.pem" # OpenSUSE Leap 42.1
83
+ "cert.pem" # Ubuntu 14.04, FreeBSD
84
+ "certs/ca-certificates.crt" # Ubuntu 16.04
85
+ "certs/ca.pem" # Debian 7
86
+ )
87
+ FOREACH(SUFFIX IN LISTS OPENSSL_CA_LOCATIONS)
88
+ SET(LOC "${OPENSSL_DIR}${SUFFIX}")
89
+ IF(NOT CERT_LOCATION AND EXISTS "${OPENSSL_DIR}${SUFFIX}")
90
+ SET(CERT_LOCATION ${LOC})
91
+ ENDIF()
92
+ ENDFOREACH()
93
+ ELSE()
94
+ MESSAGE(FATAL_ERROR "Unable to find OpenSSL executable. Please provide default certificate location via CERT_LOCATION")
95
+ ENDIF()
96
+ ENDIF()
97
+
98
+ IF(CERT_LOCATION)
99
+ IF(NOT EXISTS ${CERT_LOCATION})
100
+ MESSAGE(FATAL_ERROR "Cannot use CERT_LOCATION=${CERT_LOCATION} as it doesn't exist")
101
+ ENDIF()
102
+ ADD_FEATURE_INFO(CERT_LOCATION ON "using certificates from ${CERT_LOCATION}")
103
+ ADD_DEFINITIONS(-DGIT_DEFAULT_CERT_LOCATION="${CERT_LOCATION}")
104
+ ENDIF()
105
+
106
+ SET(GIT_MBEDTLS 1)
107
+ LIST(APPEND LIBGIT2_SYSTEM_INCLUDES ${MBEDTLS_INCLUDE_DIR})
108
+ LIST(APPEND LIBGIT2_LIBS ${MBEDTLS_LIBRARIES})
109
+ # mbedTLS has no pkgconfig file, hence we can't require it
110
+ # https://github.com/ARMmbed/mbedtls/issues/228
111
+ # For now, pass its link flags as our own
112
+ LIST(APPEND LIBGIT2_PC_LIBS ${MBEDTLS_LIBRARIES})
113
+ ELSEIF (HTTPS_BACKEND STREQUAL "WinHTTP")
114
+ # WinHTTP setup was handled in the WinHTTP-specific block above
115
+ ELSE()
116
+ MESSAGE(FATAL_ERROR "Asked for backend ${HTTPS_BACKEND} but it wasn't found")
117
+ ENDIF()
118
+
119
+ SET(GIT_HTTPS 1)
120
+ ADD_FEATURE_INFO(HTTPS GIT_HTTPS "using ${HTTPS_BACKEND}")
121
+ ELSE()
122
+ SET(GIT_HTTPS 0)
123
+ ADD_FEATURE_INFO(HTTPS NO "")
124
+ ENDIF()
@@ -0,0 +1,66 @@
1
+ # Select a hash backend
2
+
3
+ # USE_SHA1=CollisionDetection(ON)/HTTPS/Generic/OFF
4
+
5
+ IF(USE_SHA1 STREQUAL ON OR USE_SHA1 STREQUAL "CollisionDetection")
6
+ SET(SHA1_BACKEND "CollisionDetection")
7
+ ELSEIF(USE_SHA1 STREQUAL "HTTPS")
8
+ message(STATUS "Checking HTTPS backend… ${HTTPS_BACKEND}")
9
+ IF(HTTPS_BACKEND STREQUAL "SecureTransport")
10
+ SET(SHA1_BACKEND "CommonCrypto")
11
+ ELSEIF(HTTPS_BACKEND STREQUAL "WinHTTP")
12
+ SET(SHA1_BACKEND "Win32")
13
+ ELSEIF(HTTPS_BACKEND)
14
+ SET(SHA1_BACKEND ${HTTPS_BACKEND})
15
+ ELSE()
16
+ ENDIF()
17
+ IF(NOT HTTPS_BACKEND)
18
+ SET(SHA1_BACKEND "CollisionDetection")
19
+ ENDIF()
20
+ message(STATUS "Using SHA1 backend ${SHA1_BACKEND}")
21
+ ELSEIF(USE_SHA1 STREQUAL "Generic")
22
+ SET(SHA1_BACKEND "Generic")
23
+ # ELSEIF(NOT USE_SHA1)
24
+ ELSE()
25
+ MESSAGE(FATAL_ERROR "Invalid value for USE_SHA1: ${USE_SHA1}")
26
+ ENDIF()
27
+
28
+ IF(SHA1_BACKEND STREQUAL "CollisionDetection")
29
+ SET(GIT_SHA1_COLLISIONDETECT 1)
30
+ ADD_DEFINITIONS(-DSHA1DC_NO_STANDARD_INCLUDES=1)
31
+ ADD_DEFINITIONS(-DSHA1DC_CUSTOM_INCLUDE_SHA1_C=\"common.h\")
32
+ ADD_DEFINITIONS(-DSHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"common.h\")
33
+ FILE(GLOB SRC_SHA1 hash/sha1/collisiondetect.* hash/sha1/sha1dc/*)
34
+ ELSEIF(SHA1_BACKEND STREQUAL "OpenSSL")
35
+ # OPENSSL_FOUND should already be set, we're checking HTTPS_BACKEND
36
+
37
+ SET(GIT_SHA1_OPENSSL 1)
38
+ IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
39
+ LIST(APPEND LIBGIT2_PC_LIBS "-lssl")
40
+ ELSE()
41
+ LIST(APPEND LIBGIT2_PC_REQUIRES "openssl")
42
+ ENDIF()
43
+ FILE(GLOB SRC_SHA1 hash/sha1/openssl.*)
44
+ ELSEIF(SHA1_BACKEND STREQUAL "CommonCrypto")
45
+ SET(GIT_SHA1_COMMON_CRYPTO 1)
46
+ FILE(GLOB SRC_SHA1 hash/sha1/common_crypto.*)
47
+ ELSEIF(SHA1_BACKEND STREQUAL "mbedTLS")
48
+ SET(GIT_SHA1_MBEDTLS 1)
49
+ FILE(GLOB SRC_SHA1 hash/sha1/mbedtls.*)
50
+ LIST(APPEND LIBGIT2_SYSTEM_INCLUDES ${MBEDTLS_INCLUDE_DIR})
51
+ LIST(APPEND LIBGIT2_LIBS ${MBEDTLS_LIBRARIES})
52
+ # mbedTLS has no pkgconfig file, hence we can't require it
53
+ # https://github.com/ARMmbed/mbedtls/issues/228
54
+ # For now, pass its link flags as our own
55
+ LIST(APPEND LIBGIT2_PC_LIBS ${MBEDTLS_LIBRARIES})
56
+ ELSEIF(SHA1_BACKEND STREQUAL "Win32")
57
+ SET(GIT_SHA1_WIN32 1)
58
+ FILE(GLOB SRC_SHA1 hash/sha1/win32.*)
59
+ ELSEIF(SHA1_BACKEND STREQUAL "Generic")
60
+ FILE(GLOB SRC_SHA1 hash/sha1/generic.*)
61
+ # ELSEIF(NOT USE_SHA1)
62
+ ELSE()
63
+ MESSAGE(FATAL_ERROR "Asked for unknown SHA1 backend: ${SHA1_BACKEND}")
64
+ ENDIF()
65
+
66
+ ADD_FEATURE_INFO(SHA ON "using ${SHA1_BACKEND}")
@@ -1992,6 +1992,9 @@ http_parse_host(const char * buf, struct http_parser_url *u, int found_at) {
1992
1992
  const char *p;
1993
1993
  size_t buflen = u->field_data[UF_HOST].off + u->field_data[UF_HOST].len;
1994
1994
 
1995
+ if (buflen > UINT16_MAX)
1996
+ return 1;
1997
+
1995
1998
  u->field_data[UF_HOST].len = 0;
1996
1999
 
1997
2000
  s = found_at ? s_http_userinfo_start : s_http_host_start;
@@ -2006,21 +2009,21 @@ http_parse_host(const char * buf, struct http_parser_url *u, int found_at) {
2006
2009
  switch(new_s) {
2007
2010
  case s_http_host:
2008
2011
  if (s != s_http_host) {
2009
- u->field_data[UF_HOST].off = p - buf;
2012
+ u->field_data[UF_HOST].off = (uint16_t)(p - buf);
2010
2013
  }
2011
2014
  u->field_data[UF_HOST].len++;
2012
2015
  break;
2013
2016
 
2014
2017
  case s_http_host_v6:
2015
2018
  if (s != s_http_host_v6) {
2016
- u->field_data[UF_HOST].off = p - buf;
2019
+ u->field_data[UF_HOST].off = (uint16_t)(p - buf);
2017
2020
  }
2018
2021
  u->field_data[UF_HOST].len++;
2019
2022
  break;
2020
2023
 
2021
2024
  case s_http_host_port:
2022
2025
  if (s != s_http_host_port) {
2023
- u->field_data[UF_PORT].off = p - buf;
2026
+ u->field_data[UF_PORT].off = (uint16_t)(p - buf);
2024
2027
  u->field_data[UF_PORT].len = 0;
2025
2028
  u->field_set |= (1 << UF_PORT);
2026
2029
  }
@@ -2029,7 +2032,7 @@ http_parse_host(const char * buf, struct http_parser_url *u, int found_at) {
2029
2032
 
2030
2033
  case s_http_userinfo:
2031
2034
  if (s != s_http_userinfo) {
2032
- u->field_data[UF_USERINFO].off = p - buf ;
2035
+ u->field_data[UF_USERINFO].off = (uint16_t)(p - buf);
2033
2036
  u->field_data[UF_USERINFO].len = 0;
2034
2037
  u->field_set |= (1 << UF_USERINFO);
2035
2038
  }
@@ -2047,7 +2050,6 @@ http_parse_host(const char * buf, struct http_parser_url *u, int found_at) {
2047
2050
  case s_http_host_start:
2048
2051
  case s_http_host_v6_start:
2049
2052
  case s_http_host_v6:
2050
- case s_http_host_port_start:
2051
2053
  case s_http_userinfo:
2052
2054
  case s_http_userinfo_start:
2053
2055
  return 1;
@@ -2067,6 +2069,9 @@ http_parser_parse_url(const char *buf, size_t buflen, int is_connect,
2067
2069
  enum http_parser_url_fields uf, old_uf;
2068
2070
  int found_at = 0;
2069
2071
 
2072
+ if (buflen > UINT16_MAX)
2073
+ return 1;
2074
+
2070
2075
  u->port = u->field_set = 0;
2071
2076
  s = is_connect ? s_req_server_start : s_req_spaces_before_url;
2072
2077
  uf = old_uf = UF_MAX;
@@ -2122,7 +2127,7 @@ http_parser_parse_url(const char *buf, size_t buflen, int is_connect,
2122
2127
  continue;
2123
2128
  }
2124
2129
 
2125
- u->field_data[uf].off = p - buf;
2130
+ u->field_data[uf].off = (uint16_t)(p - buf);
2126
2131
  u->field_data[uf].len = 1;
2127
2132
 
2128
2133
  u->field_set |= (1 << uf);
@@ -0,0 +1,21 @@
1
+ FILE(GLOB SRC_NTLMCLIENT "ntlm.c" "unicode_builtin.c" "util.c")
2
+
3
+ ADD_DEFINITIONS(-DNTLM_STATIC=1)
4
+
5
+ DISABLE_WARNINGS(implicit-fallthrough)
6
+
7
+ IF (HTTPS_BACKEND STREQUAL "SecureTransport")
8
+ ADD_DEFINITIONS(-DCRYPT_COMMONCRYPTO)
9
+ SET(SRC_NTLMCLIENT_CRYPTO "crypt_commoncrypto.c")
10
+ ELSEIF (HTTPS_BACKEND STREQUAL "OpenSSL")
11
+ ADD_DEFINITIONS(-DCRYPT_OPENSSL)
12
+ INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
13
+ SET(SRC_NTLMCLIENT_CRYPTO "crypt_openssl.c")
14
+ ELSEIF (HTTPS_BACKEND STREQUAL "mbedTLS")
15
+ ADD_DEFINITIONS(-DCRYPT_MBEDTLS)
16
+ SET(SRC_NTLMCLIENT_CRYPTO "crypt_mbedtls.c")
17
+ ELSE ()
18
+ MESSAGE(FATAL_ERROR "Unable to use libgit2's HTTPS backend (${HTTPS_BACKEND}) for NTLM crypto")
19
+ ENDIF()
20
+
21
+ ADD_LIBRARY(ntlmclient OBJECT ${SRC_NTLMCLIENT} ${SRC_NTLMCLIENT_CRYPTO})
@@ -0,0 +1,33 @@
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_COMPAT_H__
10
+ #define PRIVATE_COMPAT_H__
11
+
12
+ #if defined (_MSC_VER)
13
+ typedef unsigned char bool;
14
+ # ifndef true
15
+ # define true 1
16
+ # endif
17
+ # ifndef false
18
+ # define false 0
19
+ # endif
20
+ #else
21
+ # include <stdbool.h>
22
+ #endif
23
+
24
+ #ifdef __linux__
25
+ # include <endian.h>
26
+ # define htonll htobe64
27
+ #endif
28
+
29
+ #ifndef MIN
30
+ # define MIN(x, y) (((x) < (y)) ? (x) : (y))
31
+ #endif
32
+
33
+ #endif /* PRIVATE_COMPAT_H__ */
@@ -0,0 +1,64 @@
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_CRYPT_COMMON_H__
10
+ #define PRIVATE_CRYPT_COMMON_H__
11
+
12
+ #if defined(CRYPT_OPENSSL)
13
+ # include "crypt_openssl.h"
14
+ #elif defined(CRYPT_MBEDTLS)
15
+ # include "crypt_mbedtls.h"
16
+ #elif defined(CRYPT_COMMONCRYPTO)
17
+ # include "crypt_commoncrypto.h"
18
+ #else
19
+ # error "no crypto support"
20
+ #endif
21
+
22
+ #define CRYPT_DES_BLOCKSIZE 8
23
+ #define CRYPT_MD4_DIGESTSIZE 16
24
+ #define CRYPT_MD5_DIGESTSIZE 16
25
+
26
+ typedef unsigned char ntlm_des_block[CRYPT_DES_BLOCKSIZE];
27
+
28
+ extern bool ntlm_random_bytes(
29
+ ntlm_client *ntlm,
30
+ unsigned char *out,
31
+ size_t len);
32
+
33
+ extern bool ntlm_des_encrypt(
34
+ ntlm_des_block *out,
35
+ ntlm_des_block *plaintext,
36
+ ntlm_des_block *key);
37
+
38
+ extern bool ntlm_md4_digest(
39
+ unsigned char out[CRYPT_MD4_DIGESTSIZE],
40
+ const unsigned char *in,
41
+ size_t in_len);
42
+
43
+ extern ntlm_hmac_ctx *ntlm_hmac_ctx_init(void);
44
+
45
+ extern bool ntlm_hmac_ctx_reset(ntlm_hmac_ctx *ctx);
46
+
47
+ extern bool ntlm_hmac_md5_init(
48
+ ntlm_hmac_ctx *ctx,
49
+ const unsigned char *key,
50
+ size_t key_len);
51
+
52
+ extern bool ntlm_hmac_md5_update(
53
+ ntlm_hmac_ctx *ctx,
54
+ const unsigned char *data,
55
+ size_t data_len);
56
+
57
+ extern bool ntlm_hmac_md5_final(
58
+ unsigned char *out,
59
+ size_t *out_len,
60
+ ntlm_hmac_ctx *ctx);
61
+
62
+ extern void ntlm_hmac_ctx_free(ntlm_hmac_ctx *ctx);
63
+
64
+ #endif /* PRIVATE_CRYPT_COMMON_H__ */
@@ -0,0 +1,120 @@
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
+ #include <stdlib.h>
10
+ #include <stdint.h>
11
+ #include <string.h>
12
+ #include <fcntl.h>
13
+ #include <unistd.h>
14
+ #include <errno.h>
15
+
16
+ #include <CommonCrypto/CommonCrypto.h>
17
+
18
+ #include "ntlm.h"
19
+ #include "crypt.h"
20
+
21
+ bool ntlm_random_bytes(
22
+ ntlm_client *ntlm,
23
+ unsigned char *out,
24
+ size_t len)
25
+ {
26
+ int fd, ret;
27
+ size_t total = 0;
28
+
29
+ if ((fd = open("/dev/urandom", O_RDONLY)) < 0) {
30
+ ntlm_client_set_errmsg(ntlm, strerror(errno));
31
+ return false;
32
+ }
33
+
34
+ while (total < len) {
35
+ if ((ret = read(fd, out, (len - total))) < 0) {
36
+ ntlm_client_set_errmsg(ntlm, strerror(errno));
37
+ return false;
38
+ } else if (ret == 0) {
39
+ ntlm_client_set_errmsg(ntlm, "unexpected eof on random device");
40
+ return false;
41
+ }
42
+
43
+ total += ret;
44
+ }
45
+
46
+ close(fd);
47
+ return true;
48
+ }
49
+
50
+ bool ntlm_des_encrypt(
51
+ ntlm_des_block *out,
52
+ ntlm_des_block *plaintext,
53
+ ntlm_des_block *key)
54
+ {
55
+ size_t written;
56
+
57
+ CCCryptorStatus result = CCCrypt(kCCEncrypt,
58
+ kCCAlgorithmDES, kCCOptionECBMode,
59
+ key, sizeof(ntlm_des_block), NULL,
60
+ plaintext, sizeof(ntlm_des_block),
61
+ out, sizeof(ntlm_des_block), &written);
62
+
63
+ return (result == kCCSuccess) ? true : false;
64
+ }
65
+
66
+ bool ntlm_md4_digest(
67
+ unsigned char out[CRYPT_MD4_DIGESTSIZE],
68
+ const unsigned char *in,
69
+ size_t in_len)
70
+ {
71
+ return !!CC_MD4(in, in_len, out);
72
+ }
73
+
74
+ ntlm_hmac_ctx *ntlm_hmac_ctx_init(void)
75
+ {
76
+ return calloc(1, sizeof(ntlm_hmac_ctx));
77
+ }
78
+
79
+ bool ntlm_hmac_ctx_reset(ntlm_hmac_ctx *ctx)
80
+ {
81
+ memset(ctx, 0, sizeof(ntlm_hmac_ctx));
82
+ return true;
83
+ }
84
+
85
+ bool ntlm_hmac_md5_init(
86
+ ntlm_hmac_ctx *ctx,
87
+ const unsigned char *key,
88
+ size_t key_len)
89
+ {
90
+ CCHmacInit(&ctx->native, kCCHmacAlgMD5, key, key_len);
91
+ return true;
92
+ }
93
+
94
+ bool ntlm_hmac_md5_update(
95
+ ntlm_hmac_ctx *ctx,
96
+ const unsigned char *data,
97
+ size_t data_len)
98
+ {
99
+ CCHmacUpdate(&ctx->native, data, data_len);
100
+ return true;
101
+ }
102
+
103
+ bool ntlm_hmac_md5_final(
104
+ unsigned char *out,
105
+ size_t *out_len,
106
+ ntlm_hmac_ctx *ctx)
107
+ {
108
+ if (*out_len < CRYPT_MD5_DIGESTSIZE)
109
+ return false;
110
+
111
+ CCHmacFinal(&ctx->native, out);
112
+
113
+ *out_len = CRYPT_MD5_DIGESTSIZE;
114
+ return true;
115
+ }
116
+
117
+ void ntlm_hmac_ctx_free(ntlm_hmac_ctx *ctx)
118
+ {
119
+ free(ctx);
120
+ }
@@ -0,0 +1,18 @@
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_CRYPT_COMMONCRYPTO_H__
10
+ #define PRIVATE_CRYPT_COMMONCRYPTO_H__
11
+
12
+ #include <CommonCrypto/CommonCrypto.h>
13
+
14
+ typedef struct {
15
+ CCHmacContext native;
16
+ } ntlm_hmac_ctx;
17
+
18
+ #endif /* PRIVATE_CRYPT_COMMONCRYPTO_H__ */