iptables: backport patch fixing bug with string module
Backport patch fixing critical bug with string module merged upstream.
Fixes: #13812
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 3d6b89c514)
			
			
This commit is contained in:
		| @@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk | |||||||
|  |  | ||||||
| PKG_NAME:=iptables | PKG_NAME:=iptables | ||||||
| PKG_VERSION:=1.8.8 | PKG_VERSION:=1.8.8 | ||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=2 | ||||||
|  |  | ||||||
| PKG_SOURCE_URL:=https://netfilter.org/projects/iptables/files | PKG_SOURCE_URL:=https://netfilter.org/projects/iptables/files | ||||||
| PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 | ||||||
|   | |||||||
| @@ -0,0 +1,40 @@ | |||||||
|  | From da5b32fb4656ab69fe1156eb7e36c7c961839e8a Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Phil Sutter <phil@nwl.cc> | ||||||
|  | Date: Wed, 8 Jun 2022 13:45:13 +0200 | ||||||
|  | Subject: [PATCH] extensions: string: Review parse_string() function | ||||||
|  |  | ||||||
|  | * Compare against sizeof(info->pattern) which is more clear than having | ||||||
|  |   to know that this buffer is of size XT_STRING_MAX_PATTERN_SIZE | ||||||
|  |  | ||||||
|  | * Invert the check and error early to reduce indenting | ||||||
|  |  | ||||||
|  | * Pass info->patlen to memcpy() to avoid reading past end of 's' | ||||||
|  |  | ||||||
|  | Signed-off-by: Phil Sutter <phil@nwl.cc> | ||||||
|  | --- | ||||||
|  |  extensions/libxt_string.c | 13 ++++++------- | ||||||
|  |  1 file changed, 6 insertions(+), 7 deletions(-) | ||||||
|  |  | ||||||
|  | --- a/extensions/libxt_string.c | ||||||
|  | +++ b/extensions/libxt_string.c | ||||||
|  | @@ -78,14 +78,13 @@ static void string_init(struct xt_entry_ | ||||||
|  |   | ||||||
|  |  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) { | ||||||
|  | -		memcpy(info->pattern, s, XT_STRING_MAX_PATTERN_SIZE); | ||||||
|  | -		info->patlen = strnlen(s, XT_STRING_MAX_PATTERN_SIZE); | ||||||
|  | -		return; | ||||||
|  | -	} | ||||||
|  | -	xtables_error(PARAMETER_PROBLEM, "STRING too long \"%s\"", s); | ||||||
|  | +	if (strlen(s) > sizeof(info->pattern)) | ||||||
|  | +		xtables_error(PARAMETER_PROBLEM, "STRING too long \"%s\"", s); | ||||||
|  | + | ||||||
|  | +	info->patlen = strnlen(s, sizeof(info->pattern)); | ||||||
|  | +	memcpy(info->pattern, s, info->patlen); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |  static void | ||||||
		Reference in New Issue
	
	Block a user
	 Christian Marangi
					Christian Marangi