do_strip is used on the filename and the target of a symlink. The link
target is either a relative or absolute path, the later not prefixed
with the to be stripped path. I think it is wrong to call the strip
function on the link target if the file type is a symlink. The following
patch fixes this.

--- src/filed/backup.c      2007-06-24 17:27:12.000000000 +0000
+++ src/filed/backup.c    2007-11-20 22:31:43.000000000 +0000
@@ -1151,7 +1151,7 @@
     * I.e. if either stripping fails don't strip anything.
     */
    if (do_strip(ff_pkt->strip_path, ff_pkt->fname)) {
-      if (ff_pkt->fname != ff_pkt->link) {
+      if (ff_pkt->type != FT_LNK && ff_pkt->fname != ff_pkt->link) {
          pm_strcpy(ff_pkt->link_save, ff_pkt->link);
          if (!do_strip(ff_pkt->strip_path, ff_pkt->link)) {
             strcpy(ff_pkt->link, ff_pkt->link_save);
@@ -1170,7 +1170,7 @@
       return;
    }
    strcpy(ff_pkt->fname, ff_pkt->fname_save);
-   if (ff_pkt->fname != ff_pkt->link) {
+   if (ff_pkt->type != FT_LNK && ff_pkt->fname != ff_pkt->link) {
       strcpy(ff_pkt->link, ff_pkt->link_save);
    }
 }

Bastian

-- 
It would be illogical to kill without reason.
                -- Spock, "Journey to Babel", stardate 3842.4

Attachment: signature.asc
Description: Digital signature

Reply via email to