[dpdk-dev] examples/ipsec-secgw: fix ip address parsing

Message ID 1526292051-58151-1-git-send-email-kirill.rybalchenko@intel.com (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Rybalchenko, Kirill May 14, 2018, 10 a.m. UTC
  In strlcpy function parameters there was no allowance for
null terminator, so ip address was copied without last character.

Fixes: ae943ebe1ed3 ("examples/ipsec-secgw: replace strncpy with strlcpy")

Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
---
 examples/ipsec-secgw/parser.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
  

Comments

De Lara Guarch, Pablo May 14, 2018, 11:25 a.m. UTC | #1
> -----Original Message-----
> From: Rybalchenko, Kirill
> Sent: Monday, May 14, 2018 11:01 AM
> To: dev@dpdk.org
> Cc: stable@dpdk.org; Rybalchenko, Kirill <kirill.rybalchenko@intel.com>;
> Nicolau, Radu <radu.nicolau@intel.com>; akhil.goyal@nxp.com; Zhang, Roy Fan
> <roy.fan.zhang@intel.com>; Pattan, Reshma <reshma.pattan@intel.com>; De
> Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>
> Subject: [PATCH] examples/ipsec-secgw: fix ip address parsing
> 
> In strlcpy function parameters there was no allowance for null terminator, so ip
> address was copied without last character.
> 
> Fixes: ae943ebe1ed3 ("examples/ipsec-secgw: replace strncpy with strlcpy")
> 
> Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>

Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

This is fixing a fix that is going into stable, so it needs to go too.
Thomas, could you add "Cc: stable@dpdk.org" when applying this?

Thanks,
Pablo
  
Thomas Monjalon May 14, 2018, 12:09 p.m. UTC | #2
> > In strlcpy function parameters there was no allowance for null terminator, so ip
> > address was copied without last character.
> > 
> > Fixes: ae943ebe1ed3 ("examples/ipsec-secgw: replace strncpy with strlcpy")
> > 
> > Signed-off-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
> 
> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
> 
> This is fixing a fix that is going into stable, so it needs to go too.
> Thomas, could you add "Cc: stable@dpdk.org" when applying this?

Applied, thanks
  

Patch

diff --git a/examples/ipsec-secgw/parser.c b/examples/ipsec-secgw/parser.c
index e2e3429..91282ca 100644
--- a/examples/ipsec-secgw/parser.c
+++ b/examples/ipsec-secgw/parser.c
@@ -213,8 +213,9 @@  parse_ipv4_addr(const char *token, struct in_addr *ipv4, uint32_t *mask)
 
 	pch = strchr(token, '/');
 	if (pch != NULL) {
-		strlcpy(ip_str, token, RTE_MIN((unsigned int long)(pch - token),
-					sizeof(ip_str)));
+		strlcpy(ip_str, token,
+			RTE_MIN((unsigned int long)(pch - token + 1),
+			sizeof(ip_str)));
 		pch += 1;
 		if (is_str_num(pch) != 0)
 			return -EINVAL;
@@ -225,7 +226,6 @@  parse_ipv4_addr(const char *token, struct in_addr *ipv4, uint32_t *mask)
 		if (mask)
 			*mask = 0;
 	}
-
 	if (strlen(ip_str) >= INET_ADDRSTRLEN)
 		return -EINVAL;
 
@@ -243,7 +243,8 @@  parse_ipv6_addr(const char *token, struct in6_addr *ipv6, uint32_t *mask)
 
 	pch = strchr(token, '/');
 	if (pch != NULL) {
-		strlcpy(ip_str, token, RTE_MIN((unsigned int long)(pch - token),
+		strlcpy(ip_str, token,
+			RTE_MIN((unsigned int long)(pch - token + 1),
 					sizeof(ip_str)));
 		pch += 1;
 		if (is_str_num(pch) != 0)