about summary refs log tree commit diff
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;