diff options
Diffstat (limited to 'bitmap.c')
-rw-r--r-- | bitmap.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -53,8 +53,9 @@ void | |||
53 | bitmap_free(struct bitmap *b) | 53 | bitmap_free(struct bitmap *b) |
54 | { | 54 | { |
55 | if (b != NULL && b->d != NULL) { | 55 | if (b != NULL && b->d != NULL) { |
56 | explicit_bzero(b->d, b->len); | 56 | bitmap_zero(b); |
57 | free(b->d); | 57 | free(b->d); |
58 | b->d = NULL; | ||
58 | } | 59 | } |
59 | free(b); | 60 | free(b); |
60 | } | 61 | } |
@@ -86,10 +87,10 @@ reserve(struct bitmap *b, u_int n) | |||
86 | return -1; /* invalid */ | 87 | return -1; /* invalid */ |
87 | nlen = (n / BITMAP_BITS) + 1; | 88 | nlen = (n / BITMAP_BITS) + 1; |
88 | if (b->len < nlen) { | 89 | if (b->len < nlen) { |
89 | if ((tmp = reallocarray(b->d, nlen, BITMAP_BYTES)) == NULL) | 90 | if ((tmp = recallocarray(b->d, b->len, |
91 | nlen, BITMAP_BYTES)) == NULL) | ||
90 | return -1; | 92 | return -1; |
91 | b->d = tmp; | 93 | b->d = tmp; |
92 | memset(b->d + b->len, 0, (nlen - b->len) * BITMAP_BYTES); | ||
93 | b->len = nlen; | 94 | b->len = nlen; |
94 | } | 95 | } |
95 | return 0; | 96 | return 0; |
@@ -188,7 +189,7 @@ bitmap_from_string(struct bitmap *b, const void *p, size_t l) | |||
188 | { | 189 | { |
189 | int r; | 190 | int r; |
190 | size_t i, offset, shift; | 191 | size_t i, offset, shift; |
191 | u_char *s = (u_char *)p; | 192 | const u_char *s = (const u_char *)p; |
192 | 193 | ||
193 | if (l > BITMAP_MAX / 8) | 194 | if (l > BITMAP_MAX / 8) |
194 | return -1; | 195 | return -1; |