blobmsg_json: do not corrupt UTF-8 strings

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
Felix Fietkau 2013-06-21 17:19:37 +02:00
parent 7c5d2b3081
commit 6f192a6fb0

View file

@ -151,11 +151,12 @@ static void add_separator(struct strbuf *s)
static void blobmsg_format_string(struct strbuf *s, const char *str)
{
const char *p, *last = str, *end = str + strlen(str);
const unsigned char *p, *last, *end;
char buf[8] = "\\u00";
end = (unsigned char *) str + strlen(str);
blobmsg_puts(s, "\"", 1);
for (p = str; *p; p++) {
for (p = (unsigned char *) str, last = p; *p; p++) {
char escape = '\0';
int len;
@ -187,7 +188,7 @@ static void blobmsg_format_string(struct strbuf *s, const char *str)
continue;
if (p > last)
blobmsg_puts(s, last, p - last);
blobmsg_puts(s, (char *) last, p - last);
last = p + 1;
buf[1] = escape;
@ -200,7 +201,7 @@ static void blobmsg_format_string(struct strbuf *s, const char *str)
blobmsg_puts(s, buf, len);
}
blobmsg_puts(s, last, end - last);
blobmsg_puts(s, (char *) last, end - last);
blobmsg_puts(s, "\"", 1);
}