The hard-coded length limits are replaced with strlen to make the code more robust.
Signed-off-by: Matthias Schiffer <mschif...@universe-factory.net> --- blobmsg_json.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/blobmsg_json.c b/blobmsg_json.c index 2d1d80d..5713948 100644 --- a/blobmsg_json.c +++ b/blobmsg_json.c @@ -135,21 +135,17 @@ static bool blobmsg_puts(struct strbuf *s, const char *c, int len) static void add_separator(struct strbuf *s) { - static char indent_chars[17] = "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; - int indent; - char *start; + const char *indent_chars = "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; + int len; if (!s->indent) return; - indent = s->indent_level; - if (indent > 16) - indent = 16; + len = s->indent_level + 1; + if (len > strlen(indent_chars)) + len = strlen(indent_chars); - start = &indent_chars[sizeof(indent_chars) - indent - 1]; - *start = '\n'; - blobmsg_puts(s, start, indent + 1); - *start = '\t'; + blobmsg_puts(s, indent_chars, len); } -- 2.8.0 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel