summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Chifflier <chifflier@inl.fr>2008-12-01 13:41:54 +0100
committerEric Leblond <eric@inl.fr>2008-12-09 00:19:04 +0100
commit2629f88687d88b66be29017c3b2731cd8c5be8b6 (patch)
treed0cd79a736563c99a5bedfbcd9e6c8265ec0e117
parenta45ad8e5b5fe4e9392f44dbcd398565e434c868e (diff)
Fix light memory error in parse_mac2str
When len is 0 (for ex. when the input mac is NULL), parse_mac2str tries to calloc a 0-bytes bloc, which leads to a conditional jump based on uninitialized value (spotted by valgrind). Signed-off-by: Pierre Chifflier <chifflier@inl.fr> Signed-off-by: Eric Leblond <eric@inl.fr>
-rw-r--r--filter/ulogd_filter_HWHDR.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/filter/ulogd_filter_HWHDR.c b/filter/ulogd_filter_HWHDR.c
index af44791..8df4f00 100644
--- a/filter/ulogd_filter_HWHDR.c
+++ b/filter/ulogd_filter_HWHDR.c
@@ -111,13 +111,19 @@ static struct ulogd_key mac2str_keys[] = {
static int parse_mac2str(struct ulogd_key *ret, unsigned char *mac,
int okey, int len)
{
- char *mac_str = calloc(len/sizeof(char)*3, sizeof(char));
- char *buf_cur = mac_str;
+ char *mac_str;
+ char *buf_cur;
int i;
+ if (len > 0)
+ mac_str = calloc(len/sizeof(char)*3, sizeof(char));
+ else
+ mac_str = strdup("");
+
if (mac_str == NULL)
return ULOGD_IRET_ERR;
+ buf_cur = mac_str;
for (i = 0; i < len; i++)
buf_cur += sprintf(buf_cur, "%02x%c", mac[i],
i == len - 1 ? 0 : ':');