diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2014-06-20 02:24:40 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2014-06-20 02:24:40 +0000 |
commit | e61964a837e1a7fcdf2f591d07ed8aeccf8bf3b8 (patch) | |
tree | cff75a3a16cf6a25802caca8cf542607cbcf574d /mansearch.c | |
parent | 5bebfd6c365b15ecca2f23728c0ca04614acff56 (diff) | |
download | mandoc-e61964a837e1a7fcdf2f591d07ed8aeccf8bf3b8.tar.gz |
Merge from OpenBSD - Marc Espie improved the ohash interface:
* rename the halloc callback to calloc, provide overflow protection
* rename the hfree callback to free, drop the useless size argument
* prevent integer overflows in ohash_resize
Diffstat (limited to 'mansearch.c')
-rw-r--r-- | mansearch.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/mansearch.c b/mansearch.c index e116aac9..fe4dc654 100644 --- a/mansearch.c +++ b/mansearch.c @@ -85,8 +85,8 @@ static void buildnames(struct manpage *, sqlite3 *, static char *buildoutput(sqlite3 *, sqlite3_stmt *, uint64_t, uint64_t); static void *hash_alloc(size_t, void *); -static void hash_free(void *, size_t, void *); -static void *hash_halloc(size_t, void *); +static void hash_free(void *, void *); +static void *hash_calloc(size_t, size_t, void *); static struct expr *exprcomp(const struct mansearch *, int, char *[]); static void exprfree(struct expr *); @@ -171,11 +171,9 @@ mansearch(const struct mansearch *search, unsigned int idx; size_t i, j, cur, maxres; - memset(&info, 0, sizeof(struct ohash_info)); - - info.halloc = hash_halloc; + info.calloc = hash_calloc; info.alloc = hash_alloc; - info.hfree = hash_free; + info.free = hash_free; info.key_offset = offsetof(struct match, pageid); *sz = cur = maxres = 0; @@ -790,10 +788,10 @@ exprfree(struct expr *p) } static void * -hash_halloc(size_t sz, void *arg) +hash_calloc(size_t nmemb, size_t sz, void *arg) { - return(mandoc_calloc(1, sz)); + return(mandoc_calloc(nmemb, sz)); } static void * @@ -804,7 +802,7 @@ hash_alloc(size_t sz, void *arg) } static void -hash_free(void *p, size_t sz, void *arg) +hash_free(void *p, void *arg) { free(p); |