summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extensions/libxt_string.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/extensions/libxt_string.c b/extensions/libxt_string.c
index d298c6a7..7c6366cb 100644
--- a/extensions/libxt_string.c
+++ b/extensions/libxt_string.c
@@ -103,6 +103,9 @@ parse_hex_string(const char *s, struct xt_string_info *info)
}
while (i < slen) {
+ if (sindex >= XT_STRING_MAX_PATTERN_SIZE)
+ xtables_error(PARAMETER_PROBLEM,
+ "STRING too long \"%s\"", s);
if (s[i] == '\\' && !hex_f) {
literal_f = 1;
} else if (s[i] == '\\') {
@@ -159,8 +162,7 @@ parse_hex_string(const char *s, struct xt_string_info *info)
info->pattern[sindex] = s[i];
i++;
}
- if (++sindex > XT_STRING_MAX_PATTERN_SIZE)
- xtables_error(PARAMETER_PROBLEM, "STRING too long \"%s\"", s);
+ sindex++;
}
info->patlen = sindex;
}