diff --git a/client/mgmt.c b/client/mgmt.c
index 86b5879..faa97a1 100644
--- a/client/mgmt.c
+++ b/client/mgmt.c
str[0] = '\0';
for (i = 0; i < NELEM(options_str); i++) {
- if ((options & (1 << i)) != 0)
- off += snprintf(str + off, sizeof(str) - off, "%s ",
+ if ((options & (1 << i)) != 0) {
+ int n = snprintf(str + off, sizeof(str) - off, "%s ",
options_str[i]);
+
+ if (n < 0 || n >= (int)(sizeof(str) - off)) {
+ str[off] = '\0';
+ break;
+ }
+
+ off += n;
+ }
}
return str;
str[0] = '\0';
for (i = 0; i < NELEM(settings_str); i++) {
- if ((settings & (1 << i)) != 0)
- off += snprintf(str + off, sizeof(str) - off, "%s ",
+ if ((settings & (1 << i)) != 0) {
+ int n = snprintf(str + off, sizeof(str) - off, "%s ",
settings_str[i]);
+
+ if (n < 0 || n >= (int)(sizeof(str) - off)) {
+ str[off] = '\0';
+ break;
+ }
+
+ off += n;
+ }
}
return str;
str[0] = '\0';
for (i = 0; i < NELEM(adv_flags_str); i++) {
- if ((flags & (1 << i)) != 0)
- off += snprintf(str + off, sizeof(str) - off, "%s ",
+ if ((flags & (1 << i)) != 0) {
+ int n = snprintf(str + off, sizeof(str) - off, "%s ",
adv_flags_str[i]);
+
+ if (n < 0 || n >= (int)(sizeof(str) - off)) {
+ str[off] = '\0';
+ break;
+ }
+
+ off += n;
+ }
}
return str;
str[0] = '\0';
for (i = 0; i < NELEM(phys_str); i++) {
- if ((phys & (1 << i)) != 0)
- off += snprintf(str + off, sizeof(str) - off, "%s ",
+ if ((phys & (1 << i)) != 0) {
+ int n = snprintf(str + off, sizeof(str) - off, "%s ",
phys_str[i]);
+
+ if (n < 0 || n >= (int)(sizeof(str) - off)) {
+ str[off] = '\0';
+ break;
+ }
+
+ off += n;
+ }
}
return str;