summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2017-01-29 11:24:20 -0500
committerRich Felker <dalias@aerifal.cx>2017-01-29 11:24:20 -0500
commitd6601f0af0452b218d247cb47513fc9cd6bbf2e2 (patch)
treeae9cddaee72229a553ccd859e0860821608f3bfe
parentdbbb3734d8c0176feabd6c46e2e85bbc3b8a60af (diff)
downloadmusl-d6601f0af0452b218d247cb47513fc9cd6bbf2e2.tar.gz
avoid unbounded strlen in gettext functions
use the standard strnlen idiom for cases where lengths greater than an imposed limit are going to be rejected immediately anyway.
-rw-r--r--src/locale/dcngettext.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/locale/dcngettext.c b/src/locale/dcngettext.c
index 73a9fd70..b68e24bc 100644
--- a/src/locale/dcngettext.c
+++ b/src/locale/dcngettext.c
@@ -40,8 +40,8 @@ char *bindtextdomain(const char *domainname, const char *dirname)
if (!domainname) return 0;
if (!dirname) return gettextdir(domainname, &(size_t){0});
- size_t domlen = strlen(domainname);
- size_t dirlen = strlen(dirname);
+ size_t domlen = strnlen(domainname, NAME_MAX+1);
+ size_t dirlen = strnlen(dirname, PATH_MAX);
if (domlen > NAME_MAX || dirlen >= PATH_MAX) {
errno = EINVAL;
return 0;
@@ -127,7 +127,7 @@ char *dcngettext(const char *domainname, const char *msgid1, const char *msgid2,
if (!domainname) domainname = __gettextdomain();
- domlen = strlen(domainname);
+ domlen = strnlen(domainname, NAME_MAX+1);
if (domlen > NAME_MAX) goto notrans;
dirname = gettextdir(domainname, &dirlen);