diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-04-27 09:18:49 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2009-04-27 09:18:49 +0000 |
commit | 51211e710a024163f91ffd5ed29908faa3cd41e7 (patch) | |
tree | f8fd0fe6e4ce0ec25195f50d93c75f5e2c0a7dfe | |
parent | 8feaf01b210752a478e2e59a274ef244c8af2c0b (diff) | |
download | glibc-51211e710a024163f91ffd5ed29908faa3cd41e7.tar.gz glibc-51211e710a024163f91ffd5ed29908faa3cd41e7.tar.xz glibc-51211e710a024163f91ffd5ed29908faa3cd41e7.zip |
Fix up build-locale-archive.c
-rw-r--r-- | fedora/build-locale-archive.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/fedora/build-locale-archive.c b/fedora/build-locale-archive.c index afe0cbdaae..f68c788220 100644 --- a/fedora/build-locale-archive.c +++ b/fedora/build-locale-archive.c @@ -63,14 +63,6 @@ next_prime (unsigned long seed) return seed; } -/* xmalloc is only used by show_archive_content. */ -void * -xmalloc (size_t size) -{ - (void) size; - exit (255); -} - void error (int status, int errnum, const char *message, ...) { @@ -89,6 +81,15 @@ error (int status, int errnum, const char *message, ...) exit (errnum == EROFS ? 0 : status); } +void * +xmalloc (size_t size) +{ + void *p = malloc (size); + if (p == NULL) + error (EXIT_FAILURE, errno, "could not allocate %zd bytes of memory", size); + return p; +} + static void open_tmpl_archive (struct locarhandle *ah) { @@ -112,15 +113,16 @@ open_tmpl_archive (struct locarhandle *ah) error (EXIT_FAILURE, errno, "cannot read archive header"); ah->fd = fd; - ah->len = (head.sumhash_offset - + head.sumhash_size * sizeof (struct sumhashent)); - if (ah->len > st.st_size) + ah->mmaped = (head.sumhash_offset + + head.sumhash_size * sizeof (struct sumhashent)); + if (ah->mmaped > (unsigned long) st.st_size) error (EXIT_FAILURE, 0, "locale archite template file truncated"); - ah->len = st.st_size; + ah->mmaped = st.st_size; + ah->reserved = st.st_size; /* Now we know how large the administrative information part is. Map all of it. */ - ah->addr = mmap64 (NULL, ah->len, PROT_READ, MAP_SHARED, fd, 0); + ah->addr = mmap64 (NULL, ah->mmaped, PROT_READ, MAP_SHARED, fd, 0); if (ah->addr == MAP_FAILED) error (EXIT_FAILURE, errno, "cannot map archive header"); } |