diff options
author | Jan Engelhardt <jengelh@medozas.de> | 2009-03-15 21:26:53 +0100 |
---|---|---|
committer | Jan Engelhardt <jengelh@medozas.de> | 2009-03-15 21:26:53 +0100 |
commit | 38725a4411b0e0f34a3077e37b0be860352085a8 (patch) | |
tree | 135adb66b80655c92d86e7d056bdda30468660e1 /extensions | |
parent | e0390bee2aa51dd76725c1a9e0d2cb53379767b8 (diff) | |
parent | f503cb8ad6360ca646e985f02c2eb0c4bfe8a2c8 (diff) |
Merge commit 'nf/master'
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/libxt_string.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/extensions/libxt_string.c b/extensions/libxt_string.c index 5ea529e4..ba4b720a 100644 --- a/extensions/libxt_string.c +++ b/extensions/libxt_string.c @@ -64,9 +64,10 @@ static void string_init(struct xt_entry_match *m) static void parse_string(const char *s, struct xt_string_info *info) { + /* xt_string does not need \0 at the end of the pattern */ if (strlen(s) <= XT_STRING_MAX_PATTERN_SIZE) { strncpy(info->pattern, s, XT_STRING_MAX_PATTERN_SIZE); - info->patlen = strlen(s); + info->patlen = strnlen(s, XT_STRING_MAX_PATTERN_SIZE); return; } xtables_error(PARAMETER_PROBLEM, "STRING too long \"%s\"", s); @@ -75,7 +76,8 @@ parse_string(const char *s, struct xt_string_info *info) static void parse_algo(const char *s, struct xt_string_info *info) { - if (strlen(s) <= XT_STRING_MAX_ALGO_NAME_SIZE) { + /* xt_string needs \0 for algo name */ + if (strlen(s) < XT_STRING_MAX_ALGO_NAME_SIZE) { strncpy(info->algo, s, XT_STRING_MAX_ALGO_NAME_SIZE); return; } @@ -208,8 +210,6 @@ string_parse(int c, char **argv, int invert, unsigned int *flags, else stringinfo->u.v1.flags |= XT_STRING_FLAG_INVERT; } - stringinfo->patlen = strnlen((char *)&stringinfo->pattern, - sizeof(stringinfo->patlen)); *flags |= STRING; break; |