diff options
author | sthen <sthen@openbsd.org> | 2018-03-06 21:01:56 +0000 |
---|---|---|
committer | sthen <sthen@openbsd.org> | 2018-03-06 21:01:56 +0000 |
commit | b90bb40ec7347ca2da354e4585275903879368db (patch) | |
tree | 5073bf2a9be3f17a9aacd721c909ddf791786454 /usr.sbin/nsd/rrl.c | |
parent | Fix a small mistake from r1.229 causing sysctl(8) to print "newval -> newval" (diff) | |
download | wireguard-openbsd-b90bb40ec7347ca2da354e4585275903879368db.tar.xz wireguard-openbsd-b90bb40ec7347ca2da354e4585275903879368db.zip |
update to NSD 4.1.20, ok florian@
- Fix memory leak in zone file read of unknown rr formatted RRs.
- Fix memory leak when rehashing nsec3 after axfr or zonefile read,
in the selectively allocated precompiled nsec3 hashes.
Diffstat (limited to 'usr.sbin/nsd/rrl.c')
-rw-r--r-- | usr.sbin/nsd/rrl.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/usr.sbin/nsd/rrl.c b/usr.sbin/nsd/rrl.c index c8dec3fc908..69232a95f4a 100644 --- a/usr.sbin/nsd/rrl.c +++ b/usr.sbin/nsd/rrl.c @@ -100,6 +100,27 @@ void rrl_mmap_init(int numch, size_t numbuck, size_t lm, size_t wlm, size_t sm, #endif } +void rrl_mmap_deinit(void) +{ +#ifdef HAVE_MMAP + size_t i; + for(i=0; i<rrl_maps_num; i++) { + munmap(rrl_maps[i], sizeof(struct rrl_bucket)*rrl_array_size); + rrl_maps[i] = NULL; + } + free(rrl_maps); + rrl_maps = NULL; +#endif +} + +void rrl_mmap_deinit_keep_mmap(void) +{ +#ifdef HAVE_MMAP + free(rrl_maps); + rrl_maps = NULL; +#endif +} + void rrl_set_limit(size_t lm, size_t wlm, size_t sm) { rrl_ratelimit = lm*2; @@ -117,6 +138,13 @@ void rrl_init(size_t ch) #endif } +void rrl_deinit(size_t ch) +{ + if(!rrl_maps || ch >= rrl_maps_num) + free(rrl_array); + rrl_array = NULL; +} + /** return the source netblock of the query, this is the genuine source * for genuine queries and the target for reflected packets */ static uint64_t rrl_get_source(query_type* query, uint16_t* c2) |