[PATCH v3] tools/bpf:Fix the wrong format specifier

Zhu Jun posted 1 patch 1 year, 4 months ago
There is a newer version of this series
tools/bpf/bpftool/xlated_dumper.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH v3] tools/bpf:Fix the wrong format specifier
Posted by Zhu Jun 1 year, 4 months ago
The format specifier of "unsigned int" in printf() should be "%u", not
"%d".

Signed-off-by: Zhu Jun <zhujun2@cmss.chinamobile.com>
---
Changes:
v2:modify commit info
v3:fix compile warninf

 tools/bpf/bpftool/xlated_dumper.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/bpf/bpftool/xlated_dumper.c b/tools/bpf/bpftool/xlated_dumper.c
index 567f56dfd9f1..d9c198e0a875 100644
--- a/tools/bpf/bpftool/xlated_dumper.c
+++ b/tools/bpf/bpftool/xlated_dumper.c
@@ -316,7 +316,7 @@ void dump_xlated_plain(struct dump_data *dd, void *buf, unsigned int len,
 	unsigned int nr_skip = 0;
 	bool double_insn = false;
 	char func_sig[1024];
-	unsigned int i;
+	int i;
 
 	record = dd->func_info;
 	for (i = 0; i < len / sizeof(*insn); i++) {
@@ -415,7 +415,7 @@ void dump_xlated_for_graph(struct dump_data *dd, void *buf_start, void *buf_end,
 			}
 		}
 
-		printf("%d: ", insn_off);
+		printf("%u: ", insn_off);
 		print_bpf_insn(&cbs, cur, true);
 
 		if (opcodes) {
-- 
2.17.1
Re: [PATCH v3] tools/bpf: Fix the wrong format specifier
Posted by Markus Elfring 1 year, 4 months ago
> The format specifier of "unsigned int" in printf() should be "%u", not
> "%d".

Would you like to add any tags (like “Fixes” and “Cc”) accordingly?


…
> ---
> Changes:
…
> v3:fix compile warninf

V3:
Fix a compilation warning?


…
> +++ b/tools/bpf/bpftool/xlated_dumper.c
> @@ -316,7 +316,7 @@ void dump_xlated_plain(struct dump_data *dd, void *buf, unsigned int len,
…
> -	unsigned int i;
> +	int i;

Please do not change the data type for the variable
if you would like to adjust a subsequent format string.


…
> @@ -415,7 +415,7 @@ void dump_xlated_for_graph(struct dump_data *dd, void *buf_start, void *buf_end,
>  			}
>  		}
>
> -		printf("%d: ", insn_off);
> +		printf("%u: ", insn_off);
>  		print_bpf_insn(&cbs, cur, true);
…

How do you think about to care more also for the return value from such a function call?
https://wiki.sei.cmu.edu/confluence/display/c/ERR33-C.+Detect+and+handle+standard+library+errors

Regards,
Markus
Re: [PATCH v3] tools/bpf:Fix the wrong format specifier
Posted by Quentin Monnet 1 year, 4 months ago
2024-07-24 03:00 UTC-0700 ~ Zhu Jun <zhujun2@cmss.chinamobile.com>
> The format specifier of "unsigned int" in printf() should be "%u", not
> "%d".
> 
> Signed-off-by: Zhu Jun <zhujun2@cmss.chinamobile.com>
> ---
> Changes:
> v2:modify commit info
> v3:fix compile warninf
> 
>  tools/bpf/bpftool/xlated_dumper.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/bpf/bpftool/xlated_dumper.c b/tools/bpf/bpftool/xlated_dumper.c
> index 567f56dfd9f1..d9c198e0a875 100644
> --- a/tools/bpf/bpftool/xlated_dumper.c
> +++ b/tools/bpf/bpftool/xlated_dumper.c
> @@ -316,7 +316,7 @@ void dump_xlated_plain(struct dump_data *dd, void *buf, unsigned int len,
>  	unsigned int nr_skip = 0;
>  	bool double_insn = false;
>  	char func_sig[1024];
> -	unsigned int i;
> +	int i;


Thanks! But unsigned seems relevant here, and it doesn't make much sense
to change the type of the int just because we don't have the right
specifier in the printf(), does it? Sorry, I should have been more
explicit: the warning on v1 and v2 can be addressed by simply removing
the "space flag" from the format string, in other words:

	printf("%4u: ", i);

Instead of what you had:

	printf("% 4u: ", i);

Quentin