FYI

---------- Forwarded message ----------
From: Vladimir Suplin <[EMAIL PROTECTED]>
Date: Sep 8, 2006 5:33 PM
Subject: debian bugs #377330 #379393
To: bug-tar@gnu.org


Hi there.

Sorry if this issue has been already addressed  - I did not find anything.

It seems that there are bugs in 1.15.91 version in incremen.c:
function try_purge_directory

1) uninitialized variable stract stat st, as was correctly pointed
by Kurt Roeckx on tar debian bug page.
2) wrong file type check in
 || (*entry == 'D' && S_ISDIR (st.st_mode))
 || (*entry == 'Y' && !S_ISDIR (st.st_mode)))

I made a patch that fixes these problems.


Regards, Vladimir.

P.S The attached script fails on my i386 and amd64
machines.
See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=377330
for more information.
--- tar-1.15.91/src/incremen.c	2006-06-08 14:28:16.000000000 +0300
+++ tar-1.15.91-mod/src/incremen.c	2006-09-07 09:06:07.000000000 +0300
@@ -1299,10 +1299,6 @@ try_purge_directory (char const *directo
 	free (p);
       p = new_name (directory_name, cur);
 
-      if (!(entry = dumpdir_locate (current_stat_info.dumpdir, cur))
-	  || (*entry == 'D' && S_ISDIR (st.st_mode))
-	  || (*entry == 'Y' && !S_ISDIR (st.st_mode)))
-	{
 	  if (deref_stat (false, p, &st))
 	    {
 	      if (errno != ENOENT) /* FIXME: Maybe keep a list of renamed
@@ -1321,6 +1317,10 @@ try_purge_directory (char const *directo
 		     quotearg_colon (p)));
 	      continue;
 	    }
+      if (!(entry = dumpdir_locate (current_stat_info.dumpdir, cur))
+	  || (*entry == 'D' && !S_ISDIR (st.st_mode))
+	  || (*entry == 'Y' && S_ISDIR (st.st_mode)))
+	{
 
 	  if (! interactive_option || confirm ("delete", p))
 	    {

Attachment: sss
Description: Binary data

Reply via email to