diff options
author | Stephen Hemminger <stephen@networkplumber.org> | 2024-02-10 16:47:25 -0800 |
---|---|---|
committer | Stephen Hemminger <stephen@networkplumber.org> | 2024-02-10 16:47:25 -0800 |
commit | d06f6a3d1766b42cb0d93537a77c46cdcb877745 (patch) | |
tree | 9b46190d8f24a6694425ec0a8104dce5752593b1 | |
parent | e91dfaaaea5f6c8e6f5746cac34f8b0f5d665870 (diff) | |
download | iproute2-d06f6a3d1766b42cb0d93537a77c46cdcb877745.tar.gz |
tc: u32: check return value from snprintf
Add assertion to check for case of snprintf failing (bad format?)
or buffer getting full.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r-- | tc/f_u32.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/tc/f_u32.c b/tc/f_u32.c index 913ec1de4..8a2413103 100644 --- a/tc/f_u32.c +++ b/tc/f_u32.c @@ -7,6 +7,7 @@ * */ +#include <assert.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> @@ -87,6 +88,7 @@ static char *sprint_u32_handle(__u32 handle, char *buf) if (htid) { int l = snprintf(b, bsize, "%x:", htid>>20); + assert(l > 0 && l < bsize); bsize -= l; b += l; } @@ -94,12 +96,14 @@ static char *sprint_u32_handle(__u32 handle, char *buf) if (hash) { int l = snprintf(b, bsize, "%x", hash); + assert(l > 0 && l < bsize); bsize -= l; b += l; } if (nodeid) { int l = snprintf(b, bsize, ":%x", nodeid); + assert(l > 0 && l < bsize); bsize -= l; b += l; } |