rugged 1.6.3 → 1.9.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.
Files changed (443) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rugged/rugged_allocator.c +0 -54
  3. data/lib/rugged/version.rb +1 -1
  4. data/vendor/libgit2/AUTHORS +1 -0
  5. data/vendor/libgit2/CMakeLists.txt +25 -17
  6. data/vendor/libgit2/COPYING +195 -1
  7. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  8. data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
  9. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  10. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
  11. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
  14. data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
  15. data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
  16. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  17. data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
  18. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  19. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  20. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  21. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  22. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  23. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  24. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
  25. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  26. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  27. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  28. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
  29. data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
  30. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  31. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  32. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  33. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  34. data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
  35. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  36. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  37. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  38. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  39. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  40. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
  41. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
  42. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
  43. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
  44. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
  45. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
  46. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
  47. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
  48. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
  49. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
  50. data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
  51. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  52. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  53. data/vendor/libgit2/deps/zlib/adler32.c +5 -27
  54. data/vendor/libgit2/deps/zlib/crc32.c +94 -167
  55. data/vendor/libgit2/deps/zlib/deflate.c +358 -435
  56. data/vendor/libgit2/deps/zlib/deflate.h +41 -10
  57. data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
  58. data/vendor/libgit2/deps/zlib/infback.c +17 -30
  59. data/vendor/libgit2/deps/zlib/inffast.c +1 -4
  60. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  61. data/vendor/libgit2/deps/zlib/inflate.c +36 -102
  62. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  63. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  64. data/vendor/libgit2/deps/zlib/trees.c +287 -352
  65. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  66. data/vendor/libgit2/deps/zlib/zlib.h +202 -202
  67. data/vendor/libgit2/deps/zlib/zutil.c +18 -44
  68. data/vendor/libgit2/deps/zlib/zutil.h +13 -33
  69. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  70. data/vendor/libgit2/include/git2/apply.h +27 -6
  71. data/vendor/libgit2/include/git2/attr.h +17 -4
  72. data/vendor/libgit2/include/git2/blame.h +133 -28
  73. data/vendor/libgit2/include/git2/blob.h +71 -28
  74. data/vendor/libgit2/include/git2/branch.h +22 -15
  75. data/vendor/libgit2/include/git2/buffer.h +6 -4
  76. data/vendor/libgit2/include/git2/cert.h +2 -1
  77. data/vendor/libgit2/include/git2/checkout.h +83 -32
  78. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  79. data/vendor/libgit2/include/git2/clone.h +25 -9
  80. data/vendor/libgit2/include/git2/commit.h +132 -3
  81. data/vendor/libgit2/include/git2/common.h +138 -56
  82. data/vendor/libgit2/include/git2/config.h +93 -23
  83. data/vendor/libgit2/include/git2/credential.h +30 -2
  84. data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
  85. data/vendor/libgit2/include/git2/deprecated.h +133 -3
  86. data/vendor/libgit2/include/git2/describe.h +13 -1
  87. data/vendor/libgit2/include/git2/diff.h +77 -9
  88. data/vendor/libgit2/include/git2/email.h +9 -29
  89. data/vendor/libgit2/include/git2/errors.h +49 -74
  90. data/vendor/libgit2/include/git2/filter.h +14 -7
  91. data/vendor/libgit2/include/git2/global.h +8 -1
  92. data/vendor/libgit2/include/git2/graph.h +3 -2
  93. data/vendor/libgit2/include/git2/ignore.h +10 -0
  94. data/vendor/libgit2/include/git2/index.h +100 -6
  95. data/vendor/libgit2/include/git2/indexer.h +21 -4
  96. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  97. data/vendor/libgit2/include/git2/merge.h +46 -1
  98. data/vendor/libgit2/include/git2/message.h +2 -2
  99. data/vendor/libgit2/include/git2/net.h +3 -1
  100. data/vendor/libgit2/include/git2/notes.h +9 -6
  101. data/vendor/libgit2/include/git2/object.h +9 -8
  102. data/vendor/libgit2/include/git2/odb.h +91 -49
  103. data/vendor/libgit2/include/git2/odb_backend.h +80 -52
  104. data/vendor/libgit2/include/git2/oid.h +24 -25
  105. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  106. data/vendor/libgit2/include/git2/pack.h +13 -1
  107. data/vendor/libgit2/include/git2/patch.h +2 -3
  108. data/vendor/libgit2/include/git2/pathspec.h +9 -0
  109. data/vendor/libgit2/include/git2/proxy.h +10 -0
  110. data/vendor/libgit2/include/git2/rebase.h +9 -6
  111. data/vendor/libgit2/include/git2/refdb.h +2 -2
  112. data/vendor/libgit2/include/git2/reflog.h +3 -2
  113. data/vendor/libgit2/include/git2/refs.h +9 -6
  114. data/vendor/libgit2/include/git2/refspec.h +14 -4
  115. data/vendor/libgit2/include/git2/remote.h +112 -18
  116. data/vendor/libgit2/include/git2/repository.h +61 -15
  117. data/vendor/libgit2/include/git2/reset.h +16 -3
  118. data/vendor/libgit2/include/git2/revert.h +9 -4
  119. data/vendor/libgit2/include/git2/revparse.h +3 -3
  120. data/vendor/libgit2/include/git2/revwalk.h +3 -2
  121. data/vendor/libgit2/include/git2/signature.h +46 -1
  122. data/vendor/libgit2/include/git2/stash.h +17 -3
  123. data/vendor/libgit2/include/git2/status.h +10 -6
  124. data/vendor/libgit2/include/git2/stdint.h +87 -85
  125. data/vendor/libgit2/include/git2/strarray.h +2 -3
  126. data/vendor/libgit2/include/git2/submodule.h +20 -9
  127. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  128. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  129. data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
  130. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  131. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  132. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  133. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  134. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  135. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  136. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  137. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  138. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  139. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  140. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  141. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
  142. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  143. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  144. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  145. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  146. data/vendor/libgit2/include/git2/sys/remote.h +8 -1
  147. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  148. data/vendor/libgit2/include/git2/sys/stream.h +25 -2
  149. data/vendor/libgit2/include/git2/sys/transport.h +44 -5
  150. data/vendor/libgit2/include/git2/tag.h +3 -1
  151. data/vendor/libgit2/include/git2/trace.h +9 -3
  152. data/vendor/libgit2/include/git2/transaction.h +3 -2
  153. data/vendor/libgit2/include/git2/transport.h +11 -3
  154. data/vendor/libgit2/include/git2/tree.h +16 -5
  155. data/vendor/libgit2/include/git2/types.h +19 -3
  156. data/vendor/libgit2/include/git2/version.h +44 -8
  157. data/vendor/libgit2/include/git2/worktree.h +19 -7
  158. data/vendor/libgit2/src/CMakeLists.txt +40 -15
  159. data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
  160. data/vendor/libgit2/src/cli/cmd.c +1 -1
  161. data/vendor/libgit2/src/cli/cmd.h +4 -0
  162. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  163. data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
  164. data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
  165. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  166. data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
  167. data/vendor/libgit2/src/cli/cmd_help.c +6 -7
  168. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  169. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  170. data/vendor/libgit2/src/cli/common.c +168 -0
  171. data/vendor/libgit2/src/cli/common.h +63 -0
  172. data/vendor/libgit2/src/cli/error.h +1 -1
  173. data/vendor/libgit2/src/cli/main.c +52 -24
  174. data/vendor/libgit2/src/cli/opt.c +29 -3
  175. data/vendor/libgit2/src/cli/opt.h +21 -3
  176. data/vendor/libgit2/src/cli/opt_usage.c +102 -33
  177. data/vendor/libgit2/src/cli/opt_usage.h +6 -1
  178. data/vendor/libgit2/src/cli/progress.c +60 -10
  179. data/vendor/libgit2/src/cli/progress.h +16 -4
  180. data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
  181. data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
  182. data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
  183. data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
  184. data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
  185. data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
  186. data/vendor/libgit2/src/libgit2/apply.c +14 -16
  187. data/vendor/libgit2/src/libgit2/attr.c +30 -13
  188. data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
  189. data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
  190. data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
  191. data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
  192. data/vendor/libgit2/src/libgit2/blame.c +152 -59
  193. data/vendor/libgit2/src/libgit2/blame.h +1 -0
  194. data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
  195. data/vendor/libgit2/src/libgit2/branch.c +2 -2
  196. data/vendor/libgit2/src/libgit2/cache.c +22 -17
  197. data/vendor/libgit2/src/libgit2/cache.h +7 -9
  198. data/vendor/libgit2/src/libgit2/checkout.c +34 -24
  199. data/vendor/libgit2/src/libgit2/checkout.h +0 -2
  200. data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
  201. data/vendor/libgit2/src/libgit2/clone.c +186 -164
  202. data/vendor/libgit2/src/libgit2/clone.h +4 -1
  203. data/vendor/libgit2/src/libgit2/commit.c +123 -9
  204. data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
  205. data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
  206. data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
  207. data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
  208. data/vendor/libgit2/src/libgit2/config.c +394 -300
  209. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  210. data/vendor/libgit2/src/libgit2/config.h +9 -4
  211. data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
  212. data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
  213. data/vendor/libgit2/src/libgit2/config_file.c +113 -96
  214. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  215. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  216. data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
  217. data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
  218. data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
  219. data/vendor/libgit2/src/libgit2/describe.c +34 -31
  220. data/vendor/libgit2/src/libgit2/diff.c +17 -8
  221. data/vendor/libgit2/src/libgit2/diff.h +6 -6
  222. data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
  223. data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
  224. data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
  225. data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
  226. data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
  227. data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
  228. data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
  229. data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
  230. data/vendor/libgit2/src/libgit2/email.c +5 -3
  231. data/vendor/libgit2/src/libgit2/fetch.c +39 -9
  232. data/vendor/libgit2/src/libgit2/fetch.h +0 -2
  233. data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
  234. data/vendor/libgit2/src/libgit2/filter.c +5 -5
  235. data/vendor/libgit2/src/libgit2/git2.rc +3 -3
  236. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  237. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  238. data/vendor/libgit2/src/libgit2/graph.c +1 -1
  239. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  240. data/vendor/libgit2/src/libgit2/ident.c +3 -3
  241. data/vendor/libgit2/src/libgit2/ignore.c +9 -5
  242. data/vendor/libgit2/src/libgit2/index.c +392 -208
  243. data/vendor/libgit2/src/libgit2/index.h +16 -3
  244. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  245. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  246. data/vendor/libgit2/src/libgit2/indexer.c +44 -41
  247. data/vendor/libgit2/src/libgit2/iterator.c +34 -13
  248. data/vendor/libgit2/src/libgit2/iterator.h +3 -0
  249. data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
  250. data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
  251. data/vendor/libgit2/src/libgit2/merge.c +56 -46
  252. data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
  253. data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
  254. data/vendor/libgit2/src/libgit2/midx.c +86 -44
  255. data/vendor/libgit2/src/libgit2/midx.h +13 -3
  256. data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
  257. data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
  258. data/vendor/libgit2/src/libgit2/notes.c +9 -8
  259. data/vendor/libgit2/src/libgit2/object.c +42 -16
  260. data/vendor/libgit2/src/libgit2/object.h +6 -0
  261. data/vendor/libgit2/src/libgit2/odb.c +16 -9
  262. data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
  263. data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
  264. data/vendor/libgit2/src/libgit2/oid.c +35 -2
  265. data/vendor/libgit2/src/libgit2/oid.h +11 -0
  266. data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
  267. data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
  268. data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
  269. data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
  270. data/vendor/libgit2/src/libgit2/pack.c +33 -27
  271. data/vendor/libgit2/src/libgit2/pack.h +15 -10
  272. data/vendor/libgit2/src/libgit2/parse.c +7 -4
  273. data/vendor/libgit2/src/libgit2/parse.h +1 -1
  274. data/vendor/libgit2/src/libgit2/patch.h +7 -1
  275. data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
  276. data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
  277. data/vendor/libgit2/src/libgit2/path.c +1 -1
  278. data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
  279. data/vendor/libgit2/src/libgit2/push.c +81 -30
  280. data/vendor/libgit2/src/libgit2/push.h +1 -0
  281. data/vendor/libgit2/src/libgit2/reader.c +1 -1
  282. data/vendor/libgit2/src/libgit2/rebase.c +72 -84
  283. data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
  284. data/vendor/libgit2/src/libgit2/reflog.c +1 -2
  285. data/vendor/libgit2/src/libgit2/reflog.h +2 -0
  286. data/vendor/libgit2/src/libgit2/refs.c +34 -8
  287. data/vendor/libgit2/src/libgit2/refs.h +6 -1
  288. data/vendor/libgit2/src/libgit2/refspec.c +28 -1
  289. data/vendor/libgit2/src/libgit2/refspec.h +8 -0
  290. data/vendor/libgit2/src/libgit2/remote.c +136 -67
  291. data/vendor/libgit2/src/libgit2/remote.h +1 -0
  292. data/vendor/libgit2/src/libgit2/repository.c +789 -330
  293. data/vendor/libgit2/src/libgit2/repository.h +22 -3
  294. data/vendor/libgit2/src/libgit2/reset.c +2 -2
  295. data/vendor/libgit2/src/libgit2/revert.c +9 -13
  296. data/vendor/libgit2/src/libgit2/revparse.c +6 -3
  297. data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
  298. data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
  299. data/vendor/libgit2/src/libgit2/settings.c +468 -0
  300. data/vendor/libgit2/src/libgit2/settings.h +6 -2
  301. data/vendor/libgit2/src/libgit2/signature.c +132 -15
  302. data/vendor/libgit2/src/libgit2/signature.h +0 -1
  303. data/vendor/libgit2/src/libgit2/stash.c +9 -8
  304. data/vendor/libgit2/src/libgit2/status.c +1 -1
  305. data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
  306. data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
  307. data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
  308. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
  309. data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
  310. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  311. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  312. data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
  313. data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
  314. data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
  315. data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
  316. data/vendor/libgit2/src/libgit2/submodule.c +106 -63
  317. data/vendor/libgit2/src/libgit2/submodule.h +9 -10
  318. data/vendor/libgit2/src/libgit2/tag.c +1 -1
  319. data/vendor/libgit2/src/libgit2/trailer.c +6 -6
  320. data/vendor/libgit2/src/libgit2/transaction.c +26 -20
  321. data/vendor/libgit2/src/libgit2/transaction.h +4 -1
  322. data/vendor/libgit2/src/libgit2/transport.c +4 -1
  323. data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
  324. data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
  325. data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
  326. data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
  327. data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
  328. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  329. data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
  330. data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
  331. data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
  332. data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
  333. data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
  334. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  335. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  336. data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
  337. data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
  338. data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
  339. data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
  340. data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
  341. data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
  342. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  343. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  344. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
  345. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  346. data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
  347. data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
  348. data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
  349. data/vendor/libgit2/src/libgit2/tree.c +35 -27
  350. data/vendor/libgit2/src/libgit2/tree.h +3 -2
  351. data/vendor/libgit2/src/libgit2/worktree.c +39 -27
  352. data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
  353. data/vendor/libgit2/src/util/alloc.c +69 -7
  354. data/vendor/libgit2/src/util/alloc.h +34 -9
  355. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  356. data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
  357. data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
  358. data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
  359. data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
  360. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
  361. data/vendor/libgit2/src/util/array.h +24 -18
  362. data/vendor/libgit2/src/util/cc-compat.h +4 -0
  363. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  364. data/vendor/libgit2/src/util/date.c +22 -14
  365. data/vendor/libgit2/src/util/date.h +12 -0
  366. data/vendor/libgit2/src/util/errors.c +401 -0
  367. data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
  368. data/vendor/libgit2/src/util/filebuf.c +6 -1
  369. data/vendor/libgit2/src/util/filebuf.h +19 -6
  370. data/vendor/libgit2/src/util/fs_path.c +16 -5
  371. data/vendor/libgit2/src/util/fs_path.h +23 -0
  372. data/vendor/libgit2/src/util/futils.c +14 -10
  373. data/vendor/libgit2/src/util/futils.h +13 -4
  374. data/vendor/libgit2/src/util/git2_features.h.in +21 -4
  375. data/vendor/libgit2/src/util/git2_util.h +6 -0
  376. data/vendor/libgit2/src/util/hash/openssl.c +152 -0
  377. data/vendor/libgit2/src/util/hash/openssl.h +17 -1
  378. data/vendor/libgit2/src/util/hash/sha.h +4 -1
  379. data/vendor/libgit2/src/util/hashmap.h +424 -0
  380. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  381. data/vendor/libgit2/src/util/integer.h +3 -1
  382. data/vendor/libgit2/src/util/net.c +318 -161
  383. data/vendor/libgit2/src/util/net.h +27 -0
  384. data/vendor/libgit2/src/util/pool.c +1 -1
  385. data/vendor/libgit2/src/util/pool.h +5 -0
  386. data/vendor/libgit2/src/util/posix.c +54 -0
  387. data/vendor/libgit2/src/util/posix.h +22 -0
  388. data/vendor/libgit2/src/util/pqueue.h +1 -1
  389. data/vendor/libgit2/src/util/process.h +222 -0
  390. data/vendor/libgit2/src/util/rand.c +6 -10
  391. data/vendor/libgit2/src/util/regexp.c +1 -1
  392. data/vendor/libgit2/src/util/sortedcache.c +14 -13
  393. data/vendor/libgit2/src/util/sortedcache.h +3 -3
  394. data/vendor/libgit2/src/util/staticstr.h +66 -0
  395. data/vendor/libgit2/src/util/str.c +2 -2
  396. data/vendor/libgit2/src/util/strlist.c +108 -0
  397. data/vendor/libgit2/src/util/strlist.h +36 -0
  398. data/vendor/libgit2/src/util/unix/posix.h +0 -2
  399. data/vendor/libgit2/src/util/unix/process.c +629 -0
  400. data/vendor/libgit2/src/util/unix/realpath.c +23 -5
  401. data/vendor/libgit2/src/util/util.c +17 -12
  402. data/vendor/libgit2/src/util/util.h +28 -54
  403. data/vendor/libgit2/src/util/vector.c +3 -3
  404. data/vendor/libgit2/src/util/vector.h +2 -2
  405. data/vendor/libgit2/src/util/win32/error.c +1 -1
  406. data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
  407. data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
  408. data/vendor/libgit2/src/util/win32/process.c +506 -0
  409. data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
  410. data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
  411. data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
  412. metadata +72 -49
  413. data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
  414. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  415. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  416. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  417. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  418. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  419. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  420. data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
  421. data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
  422. data/vendor/libgit2/src/libgit2/errors.c +0 -238
  423. data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
  424. data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
  425. data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
  426. data/vendor/libgit2/src/libgit2/netops.c +0 -124
  427. data/vendor/libgit2/src/libgit2/netops.h +0 -68
  428. data/vendor/libgit2/src/libgit2/offmap.c +0 -101
  429. data/vendor/libgit2/src/libgit2/offmap.h +0 -133
  430. data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
  431. data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
  432. data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
  433. data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
  434. data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
  435. data/vendor/libgit2/src/util/khash.h +0 -615
  436. data/vendor/libgit2/src/util/strmap.c +0 -100
  437. data/vendor/libgit2/src/util/strmap.h +0 -131
  438. /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
  439. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
  440. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
  441. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
  442. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
  443. /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -17,13 +17,14 @@
17
17
  # define GIT_FILEBUF_THREADS
18
18
  #endif
19
19
 
20
- #define GIT_FILEBUF_HASH_CONTENTS (1 << 0)
21
- #define GIT_FILEBUF_APPEND (1 << 2)
20
+ #define GIT_FILEBUF_HASH_SHA1 (1 << 0)
21
+ #define GIT_FILEBUF_HASH_SHA256 (1 << 1)
22
+ #define GIT_FILEBUF_APPEND (1 << 2)
22
23
  #define GIT_FILEBUF_CREATE_LEADING_DIRS (1 << 3)
23
- #define GIT_FILEBUF_TEMPORARY (1 << 4)
24
- #define GIT_FILEBUF_DO_NOT_BUFFER (1 << 5)
25
- #define GIT_FILEBUF_FSYNC (1 << 6)
26
- #define GIT_FILEBUF_DEFLATE_SHIFT (7)
24
+ #define GIT_FILEBUF_TEMPORARY (1 << 4)
25
+ #define GIT_FILEBUF_DO_NOT_BUFFER (1 << 5)
26
+ #define GIT_FILEBUF_FSYNC (1 << 6)
27
+ #define GIT_FILEBUF_DEFLATE_SHIFT (7)
27
28
 
28
29
  #define GIT_FILELOCK_EXTENSION ".lock\0"
29
30
  #define GIT_FILELOCK_EXTLENGTH 6
@@ -91,4 +92,16 @@ int git_filebuf_hash(unsigned char *out, git_filebuf *file);
91
92
  int git_filebuf_flush(git_filebuf *file);
92
93
  int git_filebuf_stats(time_t *mtime, size_t *size, git_filebuf *file);
93
94
 
95
+ GIT_INLINE(int) git_filebuf_hash_flags(git_hash_algorithm_t algorithm)
96
+ {
97
+ switch (algorithm) {
98
+ case GIT_HASH_ALGORITHM_SHA1:
99
+ return GIT_FILEBUF_HASH_SHA1;
100
+ case GIT_HASH_ALGORITHM_SHA256:
101
+ return GIT_FILEBUF_HASH_SHA256;
102
+ default:
103
+ return 0;
104
+ }
105
+ }
106
+
94
107
  #endif
@@ -419,6 +419,16 @@ int git_fs_path_to_dir(git_str *path)
419
419
  return git_str_oom(path) ? -1 : 0;
420
420
  }
421
421
 
422
+ size_t git_fs_path_dirlen(const char *path)
423
+ {
424
+ size_t len = strlen(path);
425
+
426
+ while (len > 1 && path[len - 1] == '/')
427
+ len--;
428
+
429
+ return len;
430
+ }
431
+
422
432
  void git_fs_path_string_to_dir(char *path, size_t size)
423
433
  {
424
434
  size_t end = strlen(path);
@@ -1938,12 +1948,13 @@ static int sudo_uid_lookup(uid_t *out)
1938
1948
  {
1939
1949
  git_str uid_str = GIT_STR_INIT;
1940
1950
  int64_t uid;
1941
- int error;
1951
+ int error = -1;
1942
1952
 
1943
- if ((error = git__getenv(&uid_str, "SUDO_UID")) == 0 &&
1944
- (error = git__strntol64(&uid, uid_str.ptr, uid_str.size, NULL, 10)) == 0 &&
1945
- uid == (int64_t)((uid_t)uid)) {
1953
+ if (git__getenv(&uid_str, "SUDO_UID") == 0 &&
1954
+ git__strntol64(&uid, uid_str.ptr, uid_str.size, NULL, 10) == 0 &&
1955
+ uid == (int64_t)((uid_t)uid)) {
1946
1956
  *out = (uid_t)uid;
1957
+ error = 0;
1947
1958
  }
1948
1959
 
1949
1960
  git_str_dispose(&uid_str);
@@ -2015,7 +2026,7 @@ int git_fs_path_find_executable(git_str *fullpath, const char *executable)
2015
2026
  git_win32_path fullpath_w, executable_w;
2016
2027
  int error;
2017
2028
 
2018
- if (git__utf8_to_16(executable_w, GIT_WIN_PATH_MAX, executable) < 0)
2029
+ if (git_utf8_to_16(executable_w, GIT_WIN_PATH_MAX, executable) < 0)
2019
2030
  return -1;
2020
2031
 
2021
2032
  error = git_win32_path_find_executable(fullpath_w, executable_w);
@@ -86,6 +86,29 @@ extern int git_fs_path_to_dir(git_str *path);
86
86
  */
87
87
  extern void git_fs_path_string_to_dir(char *path, size_t size);
88
88
 
89
+ /**
90
+ * Provides the length of the given path string with no trailing
91
+ * slashes.
92
+ */
93
+ size_t git_fs_path_dirlen(const char *path);
94
+
95
+ /**
96
+ * Returns nonzero if the given path is a filesystem root; on Windows, this
97
+ * means a drive letter (eg `A:/`, `C:\`). On POSIX this is `/`.
98
+ */
99
+ GIT_INLINE(int) git_fs_path_is_root(const char *name)
100
+ {
101
+ #ifdef GIT_WIN32
102
+ if (((name[0] >= 'A' && name[0] <= 'Z') || (name[0] >= 'a' && name[0] <= 'z')) &&
103
+ name[1] == ':' &&
104
+ (name[2] == '/' || name[2] == '\\') &&
105
+ name[3] == '\0')
106
+ return 1;
107
+ #endif
108
+
109
+ return (name[0] == '/' && name[1] == '\0');
110
+ }
111
+
89
112
  /**
90
113
  * Taken from git.git; returns nonzero if the given path is "." or "..".
91
114
  */
@@ -8,9 +8,9 @@
8
8
  #include "futils.h"
9
9
 
10
10
  #include "runtime.h"
11
- #include "strmap.h"
12
11
  #include "hash.h"
13
12
  #include "rand.h"
13
+ #include "hashmap_str.h"
14
14
 
15
15
  #include <ctype.h>
16
16
 
@@ -221,14 +221,14 @@ int git_futils_readbuffer_fd_full(git_str *buf, git_file fd)
221
221
  int git_futils_readbuffer_updated(
222
222
  git_str *out,
223
223
  const char *path,
224
- unsigned char checksum[GIT_HASH_SHA1_SIZE],
224
+ unsigned char checksum[GIT_HASH_SHA256_SIZE],
225
225
  int *updated)
226
226
  {
227
227
  int error;
228
228
  git_file fd;
229
229
  struct stat st;
230
230
  git_str buf = GIT_STR_INIT;
231
- unsigned char checksum_new[GIT_HASH_SHA1_SIZE];
231
+ unsigned char checksum_new[GIT_HASH_SHA256_SIZE];
232
232
 
233
233
  GIT_ASSERT_ARG(out);
234
234
  GIT_ASSERT_ARG(path && *path);
@@ -261,7 +261,10 @@ int git_futils_readbuffer_updated(
261
261
  p_close(fd);
262
262
 
263
263
  if (checksum) {
264
- if ((error = git_hash_buf(checksum_new, buf.ptr, buf.size, GIT_HASH_ALGORITHM_SHA1)) < 0) {
264
+ error = git_hash_buf(checksum_new, buf.ptr,
265
+ buf.size, GIT_HASH_ALGORITHM_SHA256);
266
+
267
+ if (error < 0) {
265
268
  git_str_dispose(&buf);
266
269
  return error;
267
270
  }
@@ -269,7 +272,7 @@ int git_futils_readbuffer_updated(
269
272
  /*
270
273
  * If we were given a checksum, we only want to use it if it's different
271
274
  */
272
- if (!memcmp(checksum, checksum_new, GIT_HASH_SHA1_SIZE)) {
275
+ if (!memcmp(checksum, checksum_new, GIT_HASH_SHA256_SIZE)) {
273
276
  git_str_dispose(&buf);
274
277
  if (updated)
275
278
  *updated = 0;
@@ -277,7 +280,7 @@ int git_futils_readbuffer_updated(
277
280
  return 0;
278
281
  }
279
282
 
280
- memcpy(checksum, checksum_new, GIT_HASH_SHA1_SIZE);
283
+ memcpy(checksum, checksum_new, GIT_HASH_SHA256_SIZE);
281
284
  }
282
285
 
283
286
  /*
@@ -650,7 +653,8 @@ int git_futils_mkdir_relative(
650
653
  *tail = '\0';
651
654
  st.st_mode = 0;
652
655
 
653
- if (opts->dir_map && git_strmap_exists(opts->dir_map, make_path.ptr))
656
+ if (opts->cache_pathset &&
657
+ git_hashset_str_contains(opts->cache_pathset, make_path.ptr))
654
658
  continue;
655
659
 
656
660
  /* See what's going on with this path component */
@@ -685,17 +689,17 @@ retry_lstat:
685
689
  make_path.ptr, &st, (lastch == '\0'), mode, flags, opts)) < 0)
686
690
  goto done;
687
691
 
688
- if (opts->dir_map && opts->pool) {
692
+ if (opts->cache_pathset && opts->cache_pool) {
689
693
  char *cache_path;
690
694
  size_t alloc_size;
691
695
 
692
696
  GIT_ERROR_CHECK_ALLOC_ADD(&alloc_size, make_path.size, 1);
693
- cache_path = git_pool_malloc(opts->pool, alloc_size);
697
+ cache_path = git_pool_malloc(opts->cache_pool, alloc_size);
694
698
  GIT_ERROR_CHECK_ALLOC(cache_path);
695
699
 
696
700
  memcpy(cache_path, make_path.ptr, make_path.size + 1);
697
701
 
698
- if ((error = git_strmap_set(opts->dir_map, cache_path, cache_path)) < 0)
702
+ if ((error = git_hashset_str_add(opts->cache_pathset, cache_path)) < 0)
699
703
  goto done;
700
704
  }
701
705
  }
@@ -13,8 +13,8 @@
13
13
  #include "posix.h"
14
14
  #include "fs_path.h"
15
15
  #include "pool.h"
16
- #include "strmap.h"
17
16
  #include "hash.h"
17
+ #include "hashmap_str.h"
18
18
 
19
19
  /**
20
20
  * Filebuffer methods
@@ -25,7 +25,7 @@ extern int git_futils_readbuffer(git_str *obj, const char *path);
25
25
  extern int git_futils_readbuffer_updated(
26
26
  git_str *obj,
27
27
  const char *path,
28
- unsigned char checksum[GIT_HASH_SHA1_SIZE],
28
+ unsigned char checksum[GIT_HASH_SHA256_SIZE],
29
29
  int *updated);
30
30
  extern int git_futils_readbuffer_fd_full(git_str *obj, git_file fd);
31
31
  extern int git_futils_readbuffer_fd(git_str *obj, git_file fd, size_t len);
@@ -109,8 +109,17 @@ struct git_futils_mkdir_perfdata
109
109
 
110
110
  struct git_futils_mkdir_options
111
111
  {
112
- git_strmap *dir_map;
113
- git_pool *pool;
112
+ /*
113
+ * Callers can optionally pass an allocation pool and a
114
+ * hashset of strings; mkdir will populate these with the
115
+ * path(s) it creates; this can be useful for repeated calls
116
+ * to mkdir. This will reduce I/O by avoiding testing for the
117
+ * existence of intermediate directories that it knows already
118
+ * exist (because it created them).
119
+ */
120
+ git_pool *cache_pool;
121
+ git_hashset_str *cache_pathset;
122
+
114
123
  struct git_futils_mkdir_perfdata perfdata;
115
124
  };
116
125
 
@@ -24,12 +24,15 @@
24
24
  #cmakedefine GIT_REGEX_PCRE2
25
25
  #cmakedefine GIT_REGEX_BUILTIN 1
26
26
 
27
- #cmakedefine GIT_QSORT_R_BSD
28
- #cmakedefine GIT_QSORT_R_GNU
29
- #cmakedefine GIT_QSORT_S
27
+ #cmakedefine GIT_QSORT_BSD
28
+ #cmakedefine GIT_QSORT_GNU
29
+ #cmakedefine GIT_QSORT_C11
30
+ #cmakedefine GIT_QSORT_MSC
30
31
 
31
32
  #cmakedefine GIT_SSH 1
32
- #cmakedefine GIT_SSH_MEMORY_CREDENTIALS 1
33
+ #cmakedefine GIT_SSH_EXEC 1
34
+ #cmakedefine GIT_SSH_LIBSSH2 1
35
+ #cmakedefine GIT_SSH_LIBSSH2_MEMORY_CREDENTIALS 1
33
36
 
34
37
  #cmakedefine GIT_NTLM 1
35
38
  #cmakedefine GIT_GSSAPI 1
@@ -41,11 +44,17 @@
41
44
  #cmakedefine GIT_OPENSSL_DYNAMIC 1
42
45
  #cmakedefine GIT_SECURE_TRANSPORT 1
43
46
  #cmakedefine GIT_MBEDTLS 1
47
+ #cmakedefine GIT_SCHANNEL 1
48
+
49
+ #cmakedefine GIT_HTTPPARSER_HTTPPARSER 1
50
+ #cmakedefine GIT_HTTPPARSER_LLHTTP 1
51
+ #cmakedefine GIT_HTTPPARSER_BUILTIN 1
44
52
 
45
53
  #cmakedefine GIT_SHA1_COLLISIONDETECT 1
46
54
  #cmakedefine GIT_SHA1_WIN32 1
47
55
  #cmakedefine GIT_SHA1_COMMON_CRYPTO 1
48
56
  #cmakedefine GIT_SHA1_OPENSSL 1
57
+ #cmakedefine GIT_SHA1_OPENSSL_FIPS 1
49
58
  #cmakedefine GIT_SHA1_OPENSSL_DYNAMIC 1
50
59
  #cmakedefine GIT_SHA1_MBEDTLS 1
51
60
 
@@ -53,10 +62,18 @@
53
62
  #cmakedefine GIT_SHA256_WIN32 1
54
63
  #cmakedefine GIT_SHA256_COMMON_CRYPTO 1
55
64
  #cmakedefine GIT_SHA256_OPENSSL 1
65
+ #cmakedefine GIT_SHA256_OPENSSL_FIPS 1
56
66
  #cmakedefine GIT_SHA256_OPENSSL_DYNAMIC 1
57
67
  #cmakedefine GIT_SHA256_MBEDTLS 1
58
68
 
69
+ #cmakedefine GIT_COMPRESSION_BUILTIN 1
70
+ #cmakedefine GIT_COMPRESSION_ZLIB 1
71
+
59
72
  #cmakedefine GIT_RAND_GETENTROPY 1
60
73
  #cmakedefine GIT_RAND_GETLOADAVG 1
61
74
 
75
+ #cmakedefine GIT_IO_POLL 1
76
+ #cmakedefine GIT_IO_WSAPOLL 1
77
+ #cmakedefine GIT_IO_SELECT 1
78
+
62
79
  #endif
@@ -12,6 +12,7 @@
12
12
  #endif
13
13
 
14
14
  #include "git2/common.h"
15
+ #include "git2/sys/errors.h"
15
16
  #include "cc-compat.h"
16
17
 
17
18
  typedef struct git_str git_str;
@@ -48,6 +49,10 @@ typedef struct git_str git_str;
48
49
  # define GIT_WARN_UNUSED_RESULT
49
50
  #endif
50
51
 
52
+ #if (defined(_WIN32)) && !defined(__CYGWIN__)
53
+ # define GIT_WIN32 1
54
+ #endif
55
+
51
56
  #include <assert.h>
52
57
  #include <errno.h>
53
58
  #include <limits.h>
@@ -164,5 +169,6 @@ typedef struct git_str git_str;
164
169
  if (GIT_MULTIPLY_SIZET_OVERFLOW(out, nelem, elsize)) { return -1; }
165
170
 
166
171
  #include "util.h"
172
+ #include "ctype_compat.h"
167
173
 
168
174
  #endif
@@ -120,6 +120,82 @@ int git_hash_sha1_final(unsigned char *out, git_hash_sha1_ctx *ctx)
120
120
 
121
121
  #endif
122
122
 
123
+ #ifdef GIT_SHA1_OPENSSL_FIPS
124
+
125
+ static const EVP_MD *SHA1_ENGINE_DIGEST_TYPE = NULL;
126
+
127
+ int git_hash_sha1_global_init(void)
128
+ {
129
+ SHA1_ENGINE_DIGEST_TYPE = EVP_sha1();
130
+ return SHA1_ENGINE_DIGEST_TYPE != NULL ? 0 : -1;
131
+ }
132
+
133
+ int git_hash_sha1_ctx_init(git_hash_sha1_ctx *ctx)
134
+ {
135
+ return git_hash_sha1_init(ctx);
136
+ }
137
+
138
+ void git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx *ctx)
139
+ {
140
+ #if OPENSSL_VERSION_NUMBER < 0x10100000L
141
+ EVP_MD_CTX_destroy(ctx->c);
142
+ #else
143
+ EVP_MD_CTX_free(ctx->c);
144
+ #endif
145
+ }
146
+
147
+ int git_hash_sha1_init(git_hash_sha1_ctx *ctx)
148
+ {
149
+ GIT_ASSERT_ARG(ctx);
150
+ GIT_ASSERT(SHA1_ENGINE_DIGEST_TYPE);
151
+
152
+ #if OPENSSL_VERSION_NUMBER < 0x10100000L
153
+ ctx->c = EVP_MD_CTX_create();
154
+ #else
155
+ ctx->c = EVP_MD_CTX_new();
156
+ #endif
157
+
158
+ GIT_ASSERT(ctx->c);
159
+
160
+ if (EVP_DigestInit_ex(ctx->c, SHA1_ENGINE_DIGEST_TYPE, NULL) != 1) {
161
+ git_hash_sha1_ctx_cleanup(ctx);
162
+ git_error_set(GIT_ERROR_SHA, "failed to initialize sha1 context");
163
+ return -1;
164
+ }
165
+
166
+ return 0;
167
+ }
168
+
169
+ int git_hash_sha1_update(git_hash_sha1_ctx *ctx, const void *data, size_t len)
170
+ {
171
+ GIT_ASSERT_ARG(ctx && ctx->c);
172
+
173
+ if (EVP_DigestUpdate(ctx->c, data, len) != 1) {
174
+ git_error_set(GIT_ERROR_SHA, "failed to update sha1");
175
+ return -1;
176
+ }
177
+
178
+ return 0;
179
+ }
180
+
181
+ int git_hash_sha1_final(unsigned char *out, git_hash_sha1_ctx *ctx)
182
+ {
183
+ unsigned int len = 0;
184
+
185
+ GIT_ASSERT_ARG(ctx && ctx->c);
186
+
187
+ if (EVP_DigestFinal(ctx->c, out, &len) != 1) {
188
+ git_error_set(GIT_ERROR_SHA, "failed to finalize sha1");
189
+ return -1;
190
+ }
191
+
192
+ ctx->c = NULL;
193
+
194
+ return 0;
195
+ }
196
+
197
+ #endif
198
+
123
199
  #ifdef GIT_SHA256_OPENSSL
124
200
 
125
201
  # ifdef GIT_OPENSSL_DYNAMIC
@@ -193,3 +269,79 @@ int git_hash_sha256_final(unsigned char *out, git_hash_sha256_ctx *ctx)
193
269
  }
194
270
 
195
271
  #endif
272
+
273
+ #ifdef GIT_SHA256_OPENSSL_FIPS
274
+
275
+ static const EVP_MD *SHA256_ENGINE_DIGEST_TYPE = NULL;
276
+
277
+ int git_hash_sha256_global_init(void)
278
+ {
279
+ SHA256_ENGINE_DIGEST_TYPE = EVP_sha256();
280
+ return SHA256_ENGINE_DIGEST_TYPE != NULL ? 0 : -1;
281
+ }
282
+
283
+ int git_hash_sha256_ctx_init(git_hash_sha256_ctx *ctx)
284
+ {
285
+ return git_hash_sha256_init(ctx);
286
+ }
287
+
288
+ void git_hash_sha256_ctx_cleanup(git_hash_sha256_ctx *ctx)
289
+ {
290
+ #if OPENSSL_VERSION_NUMBER < 0x10100000L
291
+ EVP_MD_CTX_destroy(ctx->c);
292
+ #else
293
+ EVP_MD_CTX_free(ctx->c);
294
+ #endif
295
+ }
296
+
297
+ int git_hash_sha256_init(git_hash_sha256_ctx *ctx)
298
+ {
299
+ GIT_ASSERT_ARG(ctx);
300
+ GIT_ASSERT(SHA256_ENGINE_DIGEST_TYPE);
301
+
302
+ #if OPENSSL_VERSION_NUMBER < 0x10100000L
303
+ ctx->c = EVP_MD_CTX_create();
304
+ #else
305
+ ctx->c = EVP_MD_CTX_new();
306
+ #endif
307
+
308
+ GIT_ASSERT(ctx->c);
309
+
310
+ if (EVP_DigestInit_ex(ctx->c, SHA256_ENGINE_DIGEST_TYPE, NULL) != 1) {
311
+ git_hash_sha256_ctx_cleanup(ctx);
312
+ git_error_set(GIT_ERROR_SHA, "failed to initialize sha256 context");
313
+ return -1;
314
+ }
315
+
316
+ return 0;
317
+ }
318
+
319
+ int git_hash_sha256_update(git_hash_sha256_ctx *ctx, const void *data, size_t len)
320
+ {
321
+ GIT_ASSERT_ARG(ctx && ctx->c);
322
+
323
+ if (EVP_DigestUpdate(ctx->c, data, len) != 1) {
324
+ git_error_set(GIT_ERROR_SHA, "failed to update sha256");
325
+ return -1;
326
+ }
327
+
328
+ return 0;
329
+ }
330
+
331
+ int git_hash_sha256_final(unsigned char *out, git_hash_sha256_ctx *ctx)
332
+ {
333
+ unsigned int len = 0;
334
+
335
+ GIT_ASSERT_ARG(ctx && ctx->c);
336
+
337
+ if (EVP_DigestFinal(ctx->c, out, &len) != 1) {
338
+ git_error_set(GIT_ERROR_SHA, "failed to finalize sha256");
339
+ return -1;
340
+ }
341
+
342
+ ctx->c = NULL;
343
+
344
+ return 0;
345
+ }
346
+
347
+ #endif
@@ -11,7 +11,11 @@
11
11
  #include "hash/sha.h"
12
12
 
13
13
  #ifndef GIT_OPENSSL_DYNAMIC
14
- # include <openssl/sha.h>
14
+ # if defined(GIT_SHA1_OPENSSL_FIPS) || defined(GIT_SHA256_OPENSSL_FIPS)
15
+ # include <openssl/evp.h>
16
+ # else
17
+ # include <openssl/sha.h>
18
+ # endif
15
19
  #else
16
20
 
17
21
  typedef struct {
@@ -36,10 +40,22 @@ struct git_hash_sha1_ctx {
36
40
  };
37
41
  #endif
38
42
 
43
+ #ifdef GIT_SHA1_OPENSSL_FIPS
44
+ struct git_hash_sha1_ctx {
45
+ EVP_MD_CTX* c;
46
+ };
47
+ #endif
48
+
39
49
  #ifdef GIT_SHA256_OPENSSL
40
50
  struct git_hash_sha256_ctx {
41
51
  SHA256_CTX c;
42
52
  };
43
53
  #endif
44
54
 
55
+ #ifdef GIT_SHA256_OPENSSL_FIPS
56
+ struct git_hash_sha256_ctx {
57
+ EVP_MD_CTX* c;
58
+ };
59
+ #endif
60
+
45
61
  #endif
@@ -17,7 +17,10 @@ typedef struct git_hash_sha256_ctx git_hash_sha256_ctx;
17
17
  # include "common_crypto.h"
18
18
  #endif
19
19
 
20
- #if defined(GIT_SHA1_OPENSSL) || defined(GIT_SHA256_OPENSSL)
20
+ #if defined(GIT_SHA1_OPENSSL) || \
21
+ defined(GIT_SHA1_OPENSSL_FIPS) || \
22
+ defined(GIT_SHA256_OPENSSL) || \
23
+ defined(GIT_SHA256_OPENSSL_FIPS)
21
24
  # include "openssl.h"
22
25
  #endif
23
26