blobmsg_json: do not corrupt UTF-8 strings
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
parent
7c5d2b3081
commit
6f192a6fb0
1 changed files with 5 additions and 4 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue