From: Mike Frysinger Date: Tue, 10 Oct 2006 06:18:40 +0000 (+0000) Subject: iptables segfaults when given "" to --log-prefix (Mike Frysinger ) X-Git-Tag: v1.3.7~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed26b7b0cedcdb9621ae7d4e225048614f52dc0f;p=thirdparty%2Fiptables.git iptables segfaults when given "" to --log-prefix (Mike Frysinger ) Bugzilla #516 --- diff --git a/extensions/libip6t_LOG.c b/extensions/libip6t_LOG.c index a9c8965d..5043b44e 100644 --- a/extensions/libip6t_LOG.c +++ b/extensions/libip6t_LOG.c @@ -143,6 +143,10 @@ parse(int c, char **argv, int invert, unsigned int *flags, "Maximum prefix length %u for --log-prefix", (unsigned int)sizeof(loginfo->prefix) - 1); + if (strlen(optarg) == 0) + exit_error(PARAMETER_PROBLEM, + "No prefix specified for --log-prefix"); + if (strlen(optarg) != strlen(strtok(optarg, "\n"))) exit_error(PARAMETER_PROBLEM, "Newlines not allowed in --log-prefix"); diff --git a/extensions/libipt_LOG.c b/extensions/libipt_LOG.c index 5e5d3fd8..96cc7010 100644 --- a/extensions/libipt_LOG.c +++ b/extensions/libipt_LOG.c @@ -143,6 +143,10 @@ parse(int c, char **argv, int invert, unsigned int *flags, "Maximum prefix length %u for --log-prefix", (unsigned int)sizeof(loginfo->prefix) - 1); + if (strlen(optarg) == 0) + exit_error(PARAMETER_PROBLEM, + "No prefix specified for --log-prefix"); + if (strlen(optarg) != strlen(strtok(optarg, "\n"))) exit_error(PARAMETER_PROBLEM, "Newlines not allowed in --log-prefix"); diff --git a/extensions/libipt_ULOG.c b/extensions/libipt_ULOG.c index f4b7a14a..a73b685f 100644 --- a/extensions/libipt_ULOG.c +++ b/extensions/libipt_ULOG.c @@ -110,6 +110,14 @@ static int parse(int c, char **argv, int invert, unsigned int *flags, "Maximum prefix length %u for --ulog-prefix", (unsigned int)sizeof(loginfo->prefix) - 1); + if (strlen(optarg) == 0) + exit_error(PARAMETER_PROBLEM, + "No prefix specified for --ulog-prefix"); + + if (strlen(optarg) != strlen(strtok(optarg, "\n"))) + exit_error(PARAMETER_PROBLEM, + "Newlines not allowed in --ulog-prefix"); + strcpy(loginfo->prefix, optarg); *flags |= IPT_LOG_OPT_PREFIX; break;