summaryrefslogtreecommitdiffstats
path: root/libiptc/libiptc.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2004-09-19 21:00:12 +0000
committerHarald Welte <laforge@gnumonks.org>2004-09-19 21:00:12 +0000
commit0371c0c5eb17c81e8dd44c4aa31b58318e9b7b72 (patch)
treedabacfdfdf91cf1c32d6301a68ba464e07dece9d /libiptc/libiptc.c
parent6a93fa02bb4f98156196088e14603ab4707745ed (diff)
fix segfault from memory allocation: handle->entries is actualy struct ipt_get_entries plus the size
Diffstat (limited to 'libiptc/libiptc.c')
-rw-r--r--libiptc/libiptc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libiptc/libiptc.c b/libiptc/libiptc.c
index f6a0233a..f017e498 100644
--- a/libiptc/libiptc.c
+++ b/libiptc/libiptc.c
@@ -1,4 +1,4 @@
-/* Library which manipulates firewall rules. Version $Revision: 1.48 $ */
+/* Library which manipulates firewall rules. Version $Revision: 1.49 $ */
/* Architecture of firewall rules is as follows:
*
@@ -750,11 +750,12 @@ alloc_handle(const char *tablename, unsigned int size, unsigned int num_rules)
INIT_LIST_HEAD(&h->chains);
strcpy(h->info.name, tablename);
- h->entries = malloc(size);
+ h->entries = malloc(sizeof(STRUCT_GET_ENTRIES) + size);
if (!h->entries)
goto out_free_handle;
strcpy(h->entries->name, tablename);
+ h->entries->size = size;
return h;