From 782723d6d8c7b599c4fdbbd359a7bc57b25044ad Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 5 Aug 2015 08:15:51 -0700 Subject: [PATCH] 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. --- ChangeLog | 5 +++++ locale/loadarchive.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8d7a8b4..adeba92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2015-08-05 H.J. Lu + + * locale/loadarchive.c (_nl_archive_subfreeres): Also check + dead->data[category] != NULL. + 2015-08-05 Joseph Myers [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) -- 2.7.4