diff options
author | Rich Felker <dalias@aerifal.cx> | 2015-05-18 12:11:25 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2015-05-18 12:11:25 -0400 |
commit | 43e9f652bf4b2195b04fc14c93db591b30a7b790 (patch) | |
tree | 79f073c7a81c52714ca45d1972ee3c62d0477bb9 | |
parent | 68630b55c0c7219fe9df70dc28ffbf9efc8021d8 (diff) | |
download | musl-43e9f652bf4b2195b04fc14c93db591b30a7b790.tar.gz musl-43e9f652bf4b2195b04fc14c93db591b30a7b790.tar.bz2 musl-43e9f652bf4b2195b04fc14c93db591b30a7b790.tar.xz musl-43e9f652bf4b2195b04fc14c93db591b30a7b790.zip |
fix null pointer dereference in dcngettext under specific conditions
if setlocale has not been called, the current locale's messages_name
may be a null pointer. the code path where it's assumed to be non-null
was only reachable if bindtextdomain had already been called, which is
normally not done in programs which do not call setlocale, so the
omitted check went unnoticed.
patch from Void Linux, with description rewritten.
-rw-r--r-- | src/locale/dcngettext.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/locale/dcngettext.c b/src/locale/dcngettext.c index 0057cb56..30dd41d4 100644 --- a/src/locale/dcngettext.c +++ b/src/locale/dcngettext.c @@ -132,7 +132,7 @@ char *dcngettext(const char *domainname, const char *msgid1, const char *msgid2, switch (category) { case LC_MESSAGES: locname = loc->messages_name; - if (!*locname) goto notrans; + if (!locname || !*locname) goto notrans; break; case LC_TIME: case LC_MONETARY: |