summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBart De Schuymer <bdschuym@pandora.be>2004-03-25 18:06:28 +0000
committerBart De Schuymer <bdschuym@pandora.be>2004-03-25 18:06:28 +0000
commit7a1706b679a03cf597a80f5d2115a8222a63602d (patch)
tree156e98e825409249e1cf8af910dc3309dca02898
parent2a72ba3f97f08e975c123e73fd99fcb665e3f683 (diff)
Rémi Denis-Courmont: fix segfault with malformed MAC address
-rw-r--r--userspace/arptables/extensions/arpt_mangle.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/userspace/arptables/extensions/arpt_mangle.c b/userspace/arptables/extensions/arpt_mangle.c
index fa59b13..3bf44e4 100644
--- a/userspace/arptables/extensions/arpt_mangle.c
+++ b/userspace/arptables/extensions/arpt_mangle.c
@@ -105,6 +105,8 @@ parse(int c, char **argv, int invert, unsigned int *flags,
exit_error(PARAMETER_PROBLEM, "only --h-length 6 "
"supported");
macaddr = ether_aton(argv[optind-1]);
+ if (macaddr == NULL)
+ exit_error(PARAMETER_PROBLEM, "invalid source MAC");
memcpy(mangle->src_devaddr, macaddr, e->arp.arhln);
mangle->flags |= ARPT_MANGLE_SDEV;
break;
@@ -118,6 +120,8 @@ parse(int c, char **argv, int invert, unsigned int *flags,
exit_error(PARAMETER_PROBLEM, "only --h-length 6 "
"supported");
macaddr = ether_aton(argv[optind-1]);
+ if (macaddr == NULL)
+ exit_error(PARAMETER_PROBLEM, "invalid target MAC");
memcpy(mangle->tgt_devaddr, macaddr, e->arp.arhln);
mangle->flags |= ARPT_MANGLE_TDEV;
break;