aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Hemminger <stephen@networkplumber.org>2024-02-10 16:47:25 -0800
committerStephen Hemminger <stephen@networkplumber.org>2024-02-10 16:47:25 -0800
commitd06f6a3d1766b42cb0d93537a77c46cdcb877745 (patch)
tree9b46190d8f24a6694425ec0a8104dce5752593b1
parente91dfaaaea5f6c8e6f5746cac34f8b0f5d665870 (diff)
downloadiproute2-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.c4
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;
}