Netdev List
 help / color / mirror / Atom feed
* [PATCH iproute2 0/3] compiler warning fixes
@ 2026-08-23 23:51 Stephen Hemminger
  2026-08-23 23:51 ` [PATCH iproute2 1/3] json_print: fix Gcc-17 warnings Stephen Hemminger
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Stephen Hemminger @ 2026-08-23 23:51 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

Three small patches that fix warnings when iproute2 is built with latest
GCC-17 and/or Clang-21.

Stephen Hemminger (3):
  json_print: fix Gcc-17 warnings
  lib: fix warning from ll_addr_a2n
  tc/f_u32: fix const strchr() warning

 include/json_print.h |  4 ++--
 lib/ll_addr.c        | 52 +++++++++++++++++++++++---------------------
 tc/f_u32.c           |  6 +++--
 3 files changed, 33 insertions(+), 29 deletions(-)

-- 
2.53.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH iproute2 1/3] json_print: fix Gcc-17 warnings
  2026-08-23 23:51 [PATCH iproute2 0/3] compiler warning fixes Stephen Hemminger
@ 2026-08-23 23:51 ` Stephen Hemminger
  2026-08-23 23:51 ` [PATCH iproute2 2/3] lib: fix warning from ll_addr_a2n Stephen Hemminger
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Stephen Hemminger @ 2026-08-23 23:51 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

Lastest version of Gcc and Clang warn about value of 2 in
logical operator. Example:
 warning: use of logical ‘&&’ with constant operand ‘2’ [-Wconstant-logical-operand]

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 include/json_print.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/json_print.h b/include/json_print.h
index 6a458189..79d8d4ff 100644
--- a/include/json_print.h
+++ b/include/json_print.h
@@ -15,8 +15,8 @@
 #include "json_writer.h"
 #include "color.h"
 
-#define _IS_JSON_CONTEXT(type) (is_json_context() && (type & PRINT_JSON || type & PRINT_ANY))
-#define _IS_FP_CONTEXT(type)   (!is_json_context() && (type & PRINT_FP || type & PRINT_ANY))
+#define _IS_JSON_CONTEXT(type) (is_json_context() && !!((type) & (PRINT_JSON | PRINT_ANY)))
+#define _IS_FP_CONTEXT(type)   (!is_json_context() && !!((type) & (PRINT_FP | PRINT_ANY)))
 
 json_writer_t *get_json_writer(void);
 
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH iproute2 2/3] lib: fix warning from ll_addr_a2n
  2026-08-23 23:51 [PATCH iproute2 0/3] compiler warning fixes Stephen Hemminger
  2026-08-23 23:51 ` [PATCH iproute2 1/3] json_print: fix Gcc-17 warnings Stephen Hemminger
@ 2026-08-23 23:51 ` Stephen Hemminger
  2026-08-23 23:51 ` [PATCH iproute2 3/3] tc/f_u32: fix const strchr() warning Stephen Hemminger
  2026-08-25  4:10 ` [PATCH iproute2 0/3] compiler warning fixes patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Stephen Hemminger @ 2026-08-23 23:51 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

Recent versions of strchr() propogate const char *.
This triggers warnings about lost of const.
Resolve this by reworking the loop parsing hex values.
This also adds checking for garbage after the hex value.

Also:
 - arg is no longer modified
 - Trailing garbage ("00:11:zz", "00:11:") are now rejected
 - An address longer than len bytes now fails

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/ll_addr.c | 52 ++++++++++++++++++++++++++-------------------------
 1 file changed, 27 insertions(+), 25 deletions(-)

diff --git a/lib/ll_addr.c b/lib/ll_addr.c
index 7a9eb3a4..851a5be0 100644
--- a/lib/ll_addr.c
+++ b/lib/ll_addr.c
@@ -7,6 +7,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <ctype.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <sys/ioctl.h>
@@ -45,8 +46,12 @@ const char *ll_addr_n2a(const unsigned char *addr, int alen, int type,
 /*NB: lladdr is char * (rather than u8 *) because sa_data is char * (1003.1g) */
 int ll_addr_a2n(char *lladdr, int len, const char *arg)
 {
+	const char *cp;
+	int i;
+
 	if (strchr(arg, '.')) {
 		inet_prefix pfx;
+
 		if (get_addr_1(&pfx, arg, AF_INET)) {
 			fprintf(stderr, "\"%s\" is invalid lladdr.\n", arg);
 			return -1;
@@ -55,31 +60,28 @@ int ll_addr_a2n(char *lladdr, int len, const char *arg)
 			return -1;
 		memcpy(lladdr, pfx.data, 4);
 		return 4;
-	} else {
-		int i;
+	}
 
-		for (i = 0; i < len; i++) {
-			int temp;
-			char *cp = strchr(arg, ':');
-			if (cp) {
-				*cp = 0;
-				cp++;
-			}
-			if (sscanf(arg, "%x", &temp) != 1) {
-				fprintf(stderr, "\"%s\" is invalid lladdr.\n",
-					arg);
-				return -1;
-			}
-			if (temp < 0 || temp > 255) {
-				fprintf(stderr, "\"%s\" is invalid lladdr.\n",
-					arg);
-				return -1;
-			}
-			lladdr[i] = temp;
-			if (!cp)
-				break;
-			arg = cp;
-		}
-		return i + 1;
+	for (i = 0, cp = arg; i < len; i++) {
+		unsigned long val;
+		char *endp;
+
+		if (!isxdigit(*cp))
+			goto invalid;
+
+		val = strtoul(cp, &endp, 16);
+		if (val > 255)
+			goto invalid;
+
+		lladdr[i] = val;
+
+		if (*endp == '\0')
+			return i + 1;
+		if (*endp != ':')
+			goto invalid;
+		cp = endp + 1;
 	}
+invalid:
+	fprintf(stderr, "\"%s\" is invalid lladdr.\n", arg);
+	return -1;
 }
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH iproute2 3/3] tc/f_u32: fix const strchr() warning
  2026-08-23 23:51 [PATCH iproute2 0/3] compiler warning fixes Stephen Hemminger
  2026-08-23 23:51 ` [PATCH iproute2 1/3] json_print: fix Gcc-17 warnings Stephen Hemminger
  2026-08-23 23:51 ` [PATCH iproute2 2/3] lib: fix warning from ll_addr_a2n Stephen Hemminger
@ 2026-08-23 23:51 ` Stephen Hemminger
  2026-08-25  4:10 ` [PATCH iproute2 0/3] compiler warning fixes patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Stephen Hemminger @ 2026-08-23 23:51 UTC (permalink / raw)
  To: netdev; +Cc: Stephen Hemminger

Newer GCC propogates const char across strchr() which
requires spliting temp variable.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 tc/f_u32.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tc/f_u32.c b/tc/f_u32.c
index 088d744e..ae285146 100644
--- a/tc/f_u32.c
+++ b/tc/f_u32.c
@@ -41,13 +41,15 @@ static void explain(void)
 static int get_u32_handle(__u32 *handle, const char *str)
 {
 	__u32 htid = 0, hash = 0, nodeid = 0;
-	char *tmp = strchr(str, ':');
+	const char *colon = strchr(str, ':');
+	char *tmp;
 
-	if (tmp == NULL) {
+	if (colon == NULL) {
 		if (memcmp("0x", str, 2) == 0)
 			return get_u32(handle, str, 16);
 		return -1;
 	}
+
 	htid = strtoul(str, &tmp, 16);
 	if (tmp == str && *str != ':' && *str != 0)
 		return -1;
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH iproute2 0/3] compiler warning fixes
  2026-08-23 23:51 [PATCH iproute2 0/3] compiler warning fixes Stephen Hemminger
                   ` (2 preceding siblings ...)
  2026-08-23 23:51 ` [PATCH iproute2 3/3] tc/f_u32: fix const strchr() warning Stephen Hemminger
@ 2026-08-25  4:10 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-08-25  4:10 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: netdev

Hello:

This series was applied to iproute2/iproute2.git (main)
by Stephen Hemminger <stephen@networkplumber.org>:

On Sun, 23 Aug 2026 16:51:30 -0700 you wrote:
> Three small patches that fix warnings when iproute2 is built with latest
> GCC-17 and/or Clang-21.
> 
> Stephen Hemminger (3):
>   json_print: fix Gcc-17 warnings
>   lib: fix warning from ll_addr_a2n
>   tc/f_u32: fix const strchr() warning
> 
> [...]

Here is the summary with links:
  - [iproute2,1/3] json_print: fix Gcc-17 warnings
    https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=9361f61abb6d
  - [iproute2,2/3] lib: fix warning from ll_addr_a2n
    https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=5faf18f672c1
  - [iproute2,3/3] tc/f_u32: fix const strchr() warning
    https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=21a61425cb9a

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-08-25  4:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-23 23:51 [PATCH iproute2 0/3] compiler warning fixes Stephen Hemminger
2026-08-23 23:51 ` [PATCH iproute2 1/3] json_print: fix Gcc-17 warnings Stephen Hemminger
2026-08-23 23:51 ` [PATCH iproute2 2/3] lib: fix warning from ll_addr_a2n Stephen Hemminger
2026-08-23 23:51 ` [PATCH iproute2 3/3] tc/f_u32: fix const strchr() warning Stephen Hemminger
2026-08-25  4:10 ` [PATCH iproute2 0/3] compiler warning fixes patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox