diff options
Diffstat (limited to 'locale/programs')
-rw-r--r-- | locale/programs/locarchive.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c index eeec3ab648..477499bd40 100644 --- a/locale/programs/locarchive.c +++ b/locale/programs/locarchive.c @@ -654,6 +654,13 @@ open_archive (struct locarhandle *ah, bool readonly) error (EXIT_FAILURE, errno, _("cannot read archive header")); } + /* Check the magic value */ + if (GET (head.magic) != AR_MAGIC) + { + (void) lockf64 (fd, F_ULOCK, sizeof (struct locarhead)); + error (EXIT_FAILURE, 0, _("bad magic value in archive header")); + } + ah->fd = fd; ah->mmaped = st.st_size; |