aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-03-12 17:54:57 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2016-03-12 17:55:30 +0200
commit9d9f34d1ef0483fc012ea283e649d507ff410638 (patch)
tree734844c924f9b395368ddcd9e4f08e1fc6e7abaa
parent06bf9bbf7922322d770a032aa9c8f9d3725984bd (diff)
downloadvmod-variable-9d9f34d1ef0483fc012ea283e649d507ff410638.tar.gz
vmod-variable-9d9f34d1ef0483fc012ea283e649d507ff410638.tar.bz2
Fix NULL dereferencing.
The bug was triggered by invoking symtab_remove with the name that has not yet been entered into the symtab. Reported by Julian Sternberg. * src/variable.c (symtab_remove): Return ENOENT if no matching entry was found.
-rw-r--r--src/variable.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/variable.c b/src/variable.c
index 333daeb..8e75ea2 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -170,12 +170,15 @@ symtab_remove(struct symtab *st, const char *name)
if (++i >= hash_size[st->hash_num])
i = 0;
if (i == pos)
return ENOENT;
}
+ if (!entry)
+ return ENOENT;
+
var_free(entry);
for (;;) {
st->tab[i] = NULL;
j = i;

Return to:

Send suggestions and report system problems to the System administrator.