summaryrefslogtreecommitdiffstats
path: root/mansearch.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-06-20 02:24:40 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-06-20 02:24:40 +0000
commite61964a837e1a7fcdf2f591d07ed8aeccf8bf3b8 (patch)
treecff75a3a16cf6a25802caca8cf542607cbcf574d /mansearch.c
parent5bebfd6c365b15ecca2f23728c0ca04614acff56 (diff)
downloadmandoc-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.c16
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);