[netfilter-cvslog] r6790 - in trunk: . iptables
libnfnetlink/include/libnfnetlink
pablo at netfilter.org
pablo at netfilter.org
Mon Apr 16 19:09:40 CEST 2007
Author: pablo at netfilter.org
Date: 2007-04-16 19:09:39 +0200 (Mon, 16 Apr 2007)
New Revision: 6790
Added:
trunk/conntrack-tools/
Removed:
trunk/conntrack/
Modified:
trunk/iptables/Makefile
trunk/iptables/iptables-restore.c
trunk/libnfnetlink/include/libnfnetlink/libnfnetlink.h
Log:
prepare conntrack and conntrackd merge: rename conntrack to conntrack-tools
Copied: trunk/conntrack-tools (from rev 6789, trunk/conntrack)
Modified: trunk/iptables/Makefile
===================================================================
--- trunk/iptables/Makefile 2007-04-16 09:12:28 UTC (rev 6789)
+++ trunk/iptables/Makefile 2007-04-16 17:09:39 UTC (rev 6790)
@@ -17,7 +17,7 @@
IPTABLES_VERSION:=1.3.7
OLD_IPTABLES_VERSION:=1.3.6
-PREFIX:=/usr/local
+PREFIX:=/usr
LIBDIR:=$(PREFIX)/lib
BINDIR:=$(PREFIX)/sbin
MANDIR:=$(PREFIX)/man
Modified: trunk/iptables/iptables-restore.c
===================================================================
--- trunk/iptables/iptables-restore.c 2007-04-16 09:12:28 UTC (rev 6789)
+++ trunk/iptables/iptables-restore.c 2007-04-16 17:09:39 UTC (rev 6790)
@@ -301,8 +301,9 @@
char *parsestart;
/* the parser */
- char *param_start, *curchar;
+ char *curchar;
int quote_open;
+ int param_len;
/* reset the newargv */
newargc = 0;
@@ -349,9 +350,11 @@
* longer a real hacker, but I can live with that */
quote_open = 0;
- param_start = parsestart;
+ param_len = 0;
for (curchar = parsestart; *curchar; curchar++) {
+ char param_buffer[1024];
+
if (*curchar == '"') {
/* quote_open cannot be true if there
* was no previous character. Thus,
@@ -360,31 +363,28 @@
*(curchar-1) != '\\') {
quote_open = 0;
*curchar = ' ';
- } else {
+ } else if (!quote_open) {
quote_open = 1;
- param_start++;
+ continue;
}
}
if (*curchar == ' '
|| *curchar == '\t'
|| * curchar == '\n') {
- char param_buffer[1024];
- int param_len = curchar-param_start;
- if (quote_open)
+ if (quote_open) {
+ param_buffer[param_len++] =
+ *curchar;
continue;
+ }
if (!param_len) {
/* two spaces? */
- param_start++;
continue;
}
-
- /* end of one parameter */
- strncpy(param_buffer, param_start,
- param_len);
- *(param_buffer+param_len) = '\0';
+ param_buffer[param_len] = '\0';
+
/* check if table name specified */
if (!strncmp(param_buffer, "-t", 3)
|| !strncmp(param_buffer, "--table", 8)) {
@@ -395,9 +395,26 @@
}
add_argv(param_buffer);
- param_start += param_len + 1;
+ param_len = 0;
} else {
- /* regular character, skip */
+ /* Skip backslash that escapes quote:
+ * the standard input does not require
+ * escaping. However, the output
+ * generated by iptables-save
+ * introduces bashlash to keep
+ * consistent with iptables
+ */
+ if (quote_open &&
+ *curchar == '\\' &&
+ *(curchar+1) == '"')
+ continue;
+
+ /* regular character, copy to buffer */
+ param_buffer[param_len++] = *curchar;
+
+ if (param_len >= sizeof(param_buffer))
+ exit_error(PARAMETER_PROBLEM,
+ "Parameter too long!");
}
}
Modified: trunk/libnfnetlink/include/libnfnetlink/libnfnetlink.h
===================================================================
--- trunk/libnfnetlink/include/libnfnetlink/libnfnetlink.h 2007-04-16 09:12:28 UTC (rev 6789)
+++ trunk/libnfnetlink/include/libnfnetlink/libnfnetlink.h 2007-04-16 17:09:39 UTC (rev 6790)
@@ -163,7 +163,7 @@
nfnl_parse_attr((tb), (max), NFA_DATA((nfa)), NFA_PAYLOAD((nfa)))
#define nfnl_nest(nlh, bufsize, type) \
({ struct nfattr *__start = NLMSG_TAIL(nlh); \
- nfnl_addattr_l(nlh, bufsize, (NFNL_NFA_NEST | type), NULL, 0); \
+ nfnl_addattr_l(nlh, bufsize, type, NULL, 0); \
__start; })
#define nfnl_nest_end(nlh, tail) \
({ (tail)->nfa_len = (void *) NLMSG_TAIL(nlh) - (void *) tail; })
More information about the netfilter-cvslog
mailing list