aboutsummaryrefslogtreecommitdiff
path: root/locale/programs
diff options
context:
space:
mode:
Diffstat (limited to 'locale/programs')
-rw-r--r--locale/programs/locarchive.c7
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;