summaryrefslogtreecommitdiffstats
path: root/contrib/ipfilter/lib/buildopts.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ipfilter/lib/buildopts.c')
-rw-r--r--contrib/ipfilter/lib/buildopts.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/contrib/ipfilter/lib/buildopts.c b/contrib/ipfilter/lib/buildopts.c
index bdd0538..1d1de8c 100644
--- a/contrib/ipfilter/lib/buildopts.c
+++ b/contrib/ipfilter/lib/buildopts.c
@@ -1,19 +1,19 @@
/* $FreeBSD$ */
/*
- * Copyright (C) 2000-2002 by Darren Reed.
+ * Copyright (C) 2012 by Darren Reed.
*
* See the IPFILTER.LICENCE file for details on licencing.
*
- * $Id: buildopts.c,v 1.6.4.1 2006/06/16 17:20:56 darrenr Exp $
+ * $Id$
*/
#include "ipf.h"
u_32_t buildopts(cp, op, len)
-char *cp, *op;
-int len;
+ char *cp, *op;
+ int len;
{
struct ipopt_names *io;
u_32_t msk = 0;
@@ -23,6 +23,8 @@ int len;
for (s = strtok(cp, ","); s; s = strtok(NULL, ",")) {
if ((t = strchr(s, '=')))
*t++ = '\0';
+ else
+ t = "";
for (io = ionames; io->on_name; io++) {
if (strcasecmp(s, io->on_name) || (msk & io->on_bit))
continue;
@@ -38,6 +40,10 @@ int len;
return 0;
}
}
+ while ((len & 3) != 3) {
+ *op++ = IPOPT_NOP;
+ len++;
+ }
*op++ = IPOPT_EOL;
len++;
return len;
OpenPOWER on IntegriCloud