aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-08-05 08:15:51 -0700
committerH.J. Lu <hjl.tools@gmail.com>2015-08-05 08:15:51 -0700
commit782723d6d8c7b599c4fdbbd359a7bc57b25044ad (patch)
treeea5fba560d6a71c2611cd2ab87361f63d703484b
parentcf36e5034fa8ed5d44036bce09a55a7f00d19252 (diff)
downloadglibc-782723d6d8c7b599c4fdbbd359a7bc57b25044ad.zip
glibc-782723d6d8c7b599c4fdbbd359a7bc57b25044ad.tar.gz
glibc-782723d6d8c7b599c4fdbbd359a7bc57b25044ad.tar.bz2
Also check dead->data[category] != NULL
_nl_load_locale_from_archive (int category, const char **namep) has for (cnt = 0; cnt < __LC_LAST; ++cnt) if (cnt != LC_ALL) { lia->data[cnt] = _nl_intern_locale_data (cnt, results[cnt].addr, results[cnt].len); if (__glibc_likely (lia->data[cnt] != NULL)) { ... } } lia->data[cnt] can be NULL, which happens to en_US.UTF-8 with LC_COLLATE. But this won't happen if glibc is configured with --enable-hardcoded-path-in-tests. We should also check dead->data[category] != NULL. * locale/loadarchive.c (_nl_archive_subfreeres): Also check dead->data[category] != NULL.
-rw-r--r--ChangeLog5
-rw-r--r--locale/loadarchive.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8d7a8b4..adeba92 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-08-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ * locale/loadarchive.c (_nl_archive_subfreeres): Also check
+ dead->data[category] != NULL.
+
2015-08-05 Joseph Myers <joseph@codesourcery.com>
[BZ #18647]
diff --git a/locale/loadarchive.c b/locale/loadarchive.c
index ce5c210..3e18cf0 100644
--- a/locale/loadarchive.c
+++ b/locale/loadarchive.c
@@ -515,7 +515,7 @@ _nl_archive_subfreeres (void)
free (dead->name);
for (category = 0; category < __LC_LAST; ++category)
- if (category != LC_ALL)
+ if (category != LC_ALL && dead->data[category] != NULL)
{
/* _nl_unload_locale just does this free for the archive case. */
if (dead->data[category]->private.cleanup)