]> Dogcows Code - chaz/tar/commitdiff
Don't read from name[-1].
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 13 Nov 2007 07:01:26 +0000 (07:01 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 13 Nov 2007 07:01:26 +0000 (07:01 +0000)
* src/incremen.c (make_directory): Handle namelen == 0, since
find_directory_meta calls make_directory ("").

ChangeLog
src/incremen.c

index 0a84324a11c4a1e0c1f5ac2f98807861fb38e69e..5e05133a505335be29ccf7e8d50b5223b3f16832 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-11-12  Jim Meyering  <meyering@redhat.com>
+
+       Don't read from name[-1].
+       * src/incremen.c (make_directory): Handle namelen == 0, since
+       find_directory_meta calls make_directory ("").
+
 2007-11-07  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * bootstrap (checkout): Use URL of the gnulib CVS mirror.
@@ -11,7 +17,7 @@
        TAR_BLOCKING_FACTOR environment variable.
        * doc/tar.texi: Update
        * NEWS: Update
-       
+
 2007-10-30  Sergey Poznyakoff  <gray@gnu.org.ua>
 
        * doc/Makefile.am: Use texi2html and the CVS version of gendocs.sh
@@ -41,9 +47,9 @@
        * src/system.c (sys_exec_checkpoint_script): New function.
        (sys_exec_info_script): Restore SIGPIPE handler.
        * src/tar.c: (parse_opt): New options --hard-dereference,
-       --checkpoint-action. 
+       --checkpoint-action.
        (decode_options): Call checkpoint_finish_compile.
-       
+
        * src/system.c (sys_exec_info_script): Initialize buf. Problem
        reported by Bengt-Arne Fjellner.
 
index d570082e2bf8055ad9df6aa844a80d3dfe77ff71..1c9113cecbc67c69707ad0c531b79865522bd182 100644 (file)
@@ -124,8 +124,8 @@ make_directory (const char *name)
   directory->orig = NULL;
   directory->flags = false;
   strcpy (directory->name, name);
-  if (ISSLASH (directory->name[namelen-1]))
-    directory->name[namelen-1] = 0;
+  if (namelen && ISSLASH (directory->name[namelen - 1]))
+    directory->name[namelen - 1] = 0;
   directory->tagfile = NULL;
   return directory;
 }
@@ -336,7 +336,7 @@ procdir (char *name_buffer, struct stat *stat_data,
 
   {
     const char *tag_file_name;
-    
+
     switch (check_exclusion_tags (name_buffer, &tag_file_name))
       {
       case exclusion_tag_all:
@@ -355,13 +355,13 @@ procdir (char *name_buffer, struct stat *stat_data,
                               _("contents not dumped"));
        directory->children = NO_CHILDREN;
        break;
-       
+
       case exclusion_tag_under:
        exclusion_tag_warning (name_buffer, tag_file_name,
                               _("contents not dumped"));
        directory->tagfile = tag_file_name;
        break;
-       
+
       case exclusion_tag_none:
        break;
       }
@@ -507,7 +507,7 @@ scan_directory (char *dir, dev_t device)
   size_t name_length;          /* used length in name_buffer */
   struct stat stat_data;
   struct directory *directory;
-  
+
   if (! dirp)
     savedir_error (dir);
 
@@ -531,7 +531,7 @@ scan_directory (char *dir, dev_t device)
 
   directory = procdir (name_buffer, &stat_data, device, NO_CHILDREN, false,
                       NULL);
-  
+
   if (dirp && directory->children != NO_CHILDREN)
     {
       char  *entry;    /* directory entry being scanned */
@@ -1416,12 +1416,12 @@ try_purge_directory (char const *directory_name)
             This is an extra safety precaution. Besides, it might be
             necessary to extract from archives created with tar versions
             prior to 1.19. */
-         
+
          if (*src)
            src = safer_name_suffix (src, false, absolute_names_option);
          if (*dst)
            dst = safer_name_suffix (dst, false, absolute_names_option);
-         
+
          if (*src == 0)
            src = temp_stub;
          else if (*dst == 0)
This page took 0.0307 seconds and 4 git commands to generate.