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
@@ -169,12 +169,15 @@ symtab_remove(struct symtab *st, const char *name)
169 break; 169 break;
170 if (++i >= hash_size[st->hash_num]) 170 if (++i >= hash_size[st->hash_num])
171 i = 0; 171 i = 0;
172 if (i == pos) 172 if (i == pos)
173 return ENOENT; 173 return ENOENT;
174 } 174 }
175
176 if (!entry)
177 return ENOENT;
175 178
176 var_free(entry); 179 var_free(entry);
177 180
178 for (;;) { 181 for (;;) {
179 st->tab[i] = NULL; 182 st->tab[i] = NULL;
180 j = i; 183 j = i;

Return to:

Send suggestions and report system problems to the System administrator.