summaryrefslogtreecommitdiff
path: root/src/locale
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2015-05-18 12:11:25 -0400
committerRich Felker <dalias@aerifal.cx>2015-05-18 12:11:25 -0400
commit43e9f652bf4b2195b04fc14c93db591b30a7b790 (patch)
tree79f073c7a81c52714ca45d1972ee3c62d0477bb9 /src/locale
parent68630b55c0c7219fe9df70dc28ffbf9efc8021d8 (diff)
downloadmusl-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.
Diffstat (limited to 'src/locale')
-rw-r--r--src/locale/dcngettext.c2
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: