]> Dogcows Code - chaz/tar/blobdiff - src/create.c
tar: don't cross struct member boundaries with OLDGNU_MAGIC
[chaz/tar] / src / create.c
index 26993c21e5792be036be572e930a4887556b9b2b..a1e90a33679f12b0119953cbf465d64bd1e21eb5 100644 (file)
@@ -562,7 +562,8 @@ write_gnu_long_link (struct tar_stat_info *st, const char *p, char type)
   GNAME_TO_CHARS (tmpname, header->header.gname);
   free (tmpname);
 
-  strcpy (header->header.magic, OLDGNU_MAGIC);
+  strcpy (header->buffer + offsetof (struct posix_header, magic),
+         OLDGNU_MAGIC);
   header->header.typeflag = type;
   finish_header (st, header, -1);
 
@@ -899,7 +900,8 @@ start_header (struct tar_stat_info *st)
     case OLDGNU_FORMAT:
     case GNU_FORMAT:   /*FIXME?*/
       /* Overwrite header->header.magic and header.version in one blow.  */
-      strcpy (header->header.magic, OLDGNU_MAGIC);
+      strcpy (header->buffer + offsetof (struct posix_header, magic),
+             OLDGNU_MAGIC);
       break;
 
     case POSIX_FORMAT:
@@ -1795,9 +1797,7 @@ dump_file0 (struct tar_stat_info *st, char const *name, char const *p)
              set_exit_status (TAREXIT_DIFFERS);
            }
          else if (atime_preserve_option == replace_atime_preserve
-                  && (set_file_atime (fd, parentfd, name,
-                                      st->atime, fstatat_flags)
-                      != 0))
+                  && set_file_atime (fd, parentfd, name, st->atime) != 0)
            utime_error (p);
        }
 
This page took 0.022879 seconds and 4 git commands to generate.