summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorxhe <xw897002528@gmail.com>2018-12-28 07:35:36 +0800
committerrofl0r <retnyg@gmx.net>2019-01-16 02:38:18 +0000
commitb4a77c0066619f15cc17e08b072cfd65f774e44e (patch)
tree02cea8b8d048ec8f9d89c8db28d7efaff27ae4b4 /src
parent1d3a2f3b244405b2202cb4571ba7d054ca0ee661 (diff)
downloadgettext-tiny-b4a77c0066619f15cc17e08b072cfd65f774e44e.tar.gz
poparser: charset str should stop at escape chars
as we will pass raw strings directly at the first stage, we may meet an escaped '\n', e.g. "\\n". because, there's no '\\' in charset strings, we can use '\\' as a terminator to avoid taking useless parts. useless parts will cause a unsupported_charset error.
Diffstat (limited to 'src')
-rw-r--r--src/poparser.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/poparser.c b/src/poparser.c
index 831efa3..e512db7 100644
--- a/src/poparser.c
+++ b/src/poparser.c
@@ -52,7 +52,7 @@ static inline enum po_error poparser_feed_hdr(struct po_parser *p, char* msg) {
char *x, *y;
if (p->first && msg) {
if ((x = strstr(msg, "charset="))) {
- for (y = x; *y && !isspace(*y); y++);
+ for (y = x; *y && *y != '\\' && !isspace(*y); y++);
if ((uintptr_t)(y-x-7) > sizeof(p->hdr.charset))
return -po_unsupported_charset;