Browse Source

(try_purge_directory): Ensure that arguments to T and R are safe.

Sergey Poznyakoff 17 years ago
parent
commit
6f6864df13
1 changed files with 13 additions and 0 deletions
  1. 13 0
      src/incremen.c

+ 13 - 0
src/incremen.c

@@ -1410,6 +1410,19 @@ try_purge_directory (char const *directory_name)
 	  arc += strlen (arc) + 1;
 	  dst = arc + 1;
 
+	  /* Ensure that neither source nor destination are absolute file
+	     names (unless permitted by -P option), and that they do not
+	     contain dubious parts (e.g. ../).
+
+	     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)