diff options
-rw-r--r-- | src/locale/dcngettext.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/locale/dcngettext.c b/src/locale/dcngettext.c index 51e6522a..d3462fd2 100644 --- a/src/locale/dcngettext.c +++ b/src/locale/dcngettext.c @@ -229,8 +229,9 @@ notrans: unsigned long plural = __pleval(p->plural_rule, n); if (plural > p->nplurals) goto notrans; while (plural--) { - size_t l = strlen(trans); - if (l+1 >= p->map_size - (trans - (char *)p->map)) + size_t rem = p->map_size - (trans - (char *)p->map); + size_t l = strnlen(trans, rem); + if (l+1 >= rem) goto notrans; trans += l+1; } |