mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 20:40:05 +00:00
locale: don't crash if locale-archive contains all zeros
In case of power failure followed by filesystem issues locale-archive can end-up containing all zeros. In that case all calls to setlocale() generate a SIGFPE. This renders a system with a default non-C locale unbootable. Avoid this by ignoring the locale instead of generating a SIGFPE.
This commit is contained in:
parent
520d437b94
commit
18d1425127
@ -1,3 +1,8 @@
|
||||
2013-12-03 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* locale/loadarchive.c (_nl_load_locale_from_archive): Avoid
|
||||
division by 0.
|
||||
|
||||
2013-12-03 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
[BZ #16195]
|
||||
|
@ -274,6 +274,10 @@ _nl_load_locale_from_archive (int category, const char **namep)
|
||||
namehashtab = (struct namehashent *) ((char *) head
|
||||
+ head->namehash_offset);
|
||||
|
||||
/* Avoid division by 0 if the file is corrupted. */
|
||||
if (__glibc_unlikely (head->namehash_size == 0))
|
||||
goto close_and_out;
|
||||
|
||||
idx = hval % head->namehash_size;
|
||||
incr = 1 + hval % (head->namehash_size - 2);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user