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 /src/locale/dcngettext.c | |
parent | dbbb3734d8c0176feabd6c46e2e85bbc3b8a60af (diff) | |
download | musl-d6601f0af0452b218d247cb47513fc9cd6bbf2e2.tar.gz musl-d6601f0af0452b218d247cb47513fc9cd6bbf2e2.tar.bz2 musl-d6601f0af0452b218d247cb47513fc9cd6bbf2e2.tar.xz musl-d6601f0af0452b218d247cb47513fc9cd6bbf2e2.zip |
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.
Diffstat (limited to 'src/locale/dcngettext.c')
-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 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); |