From b3aa85dc2ff9eceb3a5cf66795924caf65946d64 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 10 Apr 2015 11:56:04 +0200 Subject: [PATCH 1/1] util: fix unicode decoding in unquote_first_word() --- src/shared/util.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index ebd4d58f9..3561573e1 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -7305,7 +7305,7 @@ int unquote_first_word(const char **p, char **ret, UnquoteFlags flags) { return -EINVAL; } - if (!GREEDY_REALLOC(s, allocated, sz+2)) + if (!GREEDY_REALLOC(s, allocated, sz+7)) return -ENOMEM; if (flags & UNQUOTE_CUNESCAPE) { @@ -7320,7 +7320,7 @@ int unquote_first_word(const char **p, char **ret, UnquoteFlags flags) { if (c != 0) s[sz++] = c; /* normal explicit char */ else - sz += utf8_encode_unichar(s, u); /* unicode chars we'll encode as utf8 */ + sz += utf8_encode_unichar(s + sz, u); /* unicode chars we'll encode as utf8 */ } else s[sz++] = c; @@ -7352,7 +7352,7 @@ int unquote_first_word(const char **p, char **ret, UnquoteFlags flags) { return -EINVAL; } - if (!GREEDY_REALLOC(s, allocated, sz+2)) + if (!GREEDY_REALLOC(s, allocated, sz+7)) return -ENOMEM; if (flags & UNQUOTE_CUNESCAPE) { @@ -7367,7 +7367,7 @@ int unquote_first_word(const char **p, char **ret, UnquoteFlags flags) { if (c != 0) s[sz++] = c; else - sz += utf8_encode_unichar(s, u); + sz += utf8_encode_unichar(s + sz, u); } else s[sz++] = c; @@ -7397,7 +7397,7 @@ int unquote_first_word(const char **p, char **ret, UnquoteFlags flags) { return -EINVAL; } - if (!GREEDY_REALLOC(s, allocated, sz+2)) + if (!GREEDY_REALLOC(s, allocated, sz+7)) return -ENOMEM; if (flags & UNQUOTE_CUNESCAPE) { @@ -7412,7 +7412,7 @@ int unquote_first_word(const char **p, char **ret, UnquoteFlags flags) { if (c != 0) s[sz++] = c; else - sz += utf8_encode_unichar(s, u); + sz += utf8_encode_unichar(s + sz, u); } else s[sz++] = c; -- 2.30.2