Commit Briefs

Thomas Adam

never write accum_buf on error in got_pack_dump_delta_chain_to_file()

and also avoid to override `err' if fwrite fails. ok millert, stsp


Thomas Adam

plug memory leak in got_pack_dump_delta_chain_to_file()

found by smatch. ok stsp@


Thomas Adam

change got_packidx_match_id_str_prefix not to reset the stailq

Since it appends to the given stailq, the ownership is moved and so don't initialize/reset it at the start and neither on error. The caller has to take care of the contents. (kind of) follow up to 2234939fb4. Based upon an original diff from jamsek; ok jamsek


Thomas Adam

whitespace



Thomas Adam

do not forget to flush after writing a cached fulltext to a temporary file

Fixes the following error during gotadmin pack -a: gotadmin: raw object has unexpected size



Thomas Adam

style tweaks from jamsek



Thomas Adam

remove dependency of gitwrapper, gotctl, and gotsh on object_parse.c

Move some functions from object_parse.c into hash.c. These functions either require hash.c code anyway or contain object ID implementation internals. Add a new file object_qid.c, for got_object_id_queue and got_object_qid. This new file must be linked to virtually every program.


Thomas Adam

unfold line


Thomas Adam

portable: OpenBSD compilation fixes (ta/configh)


Thomas Adam

portable: configure: split out dependencies

Rather than assume all dependencies are required for all programs, split them out. This will make packaging easier, as well as splitting the code to use subprojects. Note that due to the use of config.h semantics, in most cases the got_compat.h header file is now at the top of the .c file it is included in, so that it can handle the system header inclusion properly.


Thomas Adam

add some helper functions to compute hashes

This adds a set of functions to abstract over SHA1Init, SHA1Update, SHA1Final, their respective SHA256 variants and how to compare digests. Replace all the SHA1*() usage with the new APIs. It's a preparatory step for sha256 handling. ok stsp@


Thomas Adam

portable: remove endian.h

This is included portably.


Thomas Adam

portable: rework SHA detection

Simply the SHA detection by not predicating on libcrypto, but instead checking individual header files.


Thomas Adam

portable: remove sha1.h; found portably

Remove sha1.h as this is found portably across systems.


Thomas Adam

rename lib/sha1.c to lib/hash.c

It will soon grow functions to deal with sha256 too. stsp@ agrees.


Thomas Adam

include sha2.h too where sha1.h is included

In preparation for wide sha256 support; stsp@ agrees. Change done mechanically with find . -iname \*.[cy] -exec sam {} + X ,x/<sha1\.h>/i/\n#include <sha2.h>


Thomas Adam

use SHA1_DIGEST_LENGTH instead of sizeof(id)

ok stsp




Thomas Adam

change add_delta to take an off_t instead of size_t.

add_delta already calls got_delta_open casting the size_t to off_t, and all the add_delta callers pass an off_t anyway; fixes an implicit off_t truncation. ok stsp@



Thomas Adam

check size before calling mmap(2)

It's only a preparatory step, as checking whether a size_t is less than SIZE_MAX is moot. In a follow-up commit, however, the `filesize' field of the struct got_pack will become off_t and these checks will kick in. This also makes consistent how we guard mmap(2) against empty files. ok and improvements stsp@