diff options
author | Rich Felker <dalias@aerifal.cx> | 2017-01-29 11:24:20 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2017-01-29 11:24:20 -0500 |
commit | d6601f0af0452b218d247cb47513fc9cd6bbf2e2 (patch) | |
tree | ae9cddaee72229a553ccd859e0860821608f3bfe | |
parent | dbbb3734d8c0176feabd6c46e2e85bbc3b8a60af (diff) | |
download | musl-d6601f0af0452b218d247cb47513fc9cd6bbf2e2.zip musl-d6601f0af0452b218d247cb47513fc9cd6bbf2e2.tar.gz musl-d6601f0af0452b218d247cb47513fc9cd6bbf2e2.tar.bz2 |
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.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/locale/dcngettext.c b/src/locale/dcngettext.c index 73a9fd7..b68e24b 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); |