On Jun 7, 2002 01:27:31 pm +0200, Cyrille Lefevre wrote:
> On Fri, Jun 07, 2002 at 02:15:09AM -0400, Trevor Johnson wrote:
> > Dan Nelson wrote:
> [snip]
> > According to Mr. Schilling's testing, GNU tar 1.13.25 has a bug:
> > ftp://ftp.fokus.gmd.de/pub/unix/star/testscripts/README.gtarfail . I guess
> > it qualifies as a "non-trivial program". :-)
> 
> FYI, the current pax implementation is able to handle the following
> archives from ftp://ftp.fokus.gmd.de/pub/unix/star/testscripts/ :
> 
>       100char_longlink.tar
>       gtarfail.tar
>       gtarfail2.tar
> 
> but miserably fail on this one :
> 
>       long.ustar.gz
> 
> $ uname -a
> FreeBSD gits 4.6-RC FreeBSD 4.6-RC #7: Sun Jun  2 16:33:05 CEST 2002     
>root@gits:/disk2/4.x-stable/src/sys/compile/CUSTOM  i386
> $ pax -zvf 
> -rw-r--r--  1 486              cvs            4 Apr 19  2000 ___________________
> ___________________________________________________________________________D_099
> /_______________________________________________________________________________
> __________________1000000644 0000746 0003720 00000000004 07077317140 0055507 0
> 
> $ star -zvtf 
>       4 -rw-r--r-- jes/cats Apr 19 13:54 2000 __________________________________
> ____________________________________________________________D_099/______________
> ________________________________________________________________________________
> ___100
> 
> I'll try to fix this...

done, here is the patch which may be integrated to 4.6 -release ?

Index: /tmp/src/bin/pax/tar.c
===================================================================
RCS file: /home/ncvs/src/bin/pax/tar.c,v
retrieving revision 1.19
diff -u -r1.19 tar.c
--- /tmp/src/bin/pax/tar.c      16 May 2002 01:57:13 -0000      1.19
+++ /tmp/src/bin/pax/tar.c      11 Jun 2002 23:39:16 -0000
@@ -758,7 +758,7 @@
                *dest++ = '/';
                cnt++;
        }
-       arcn->nlen = cnt + l_strncpy(dest, hd->name, sizeof(arcn->name) - cnt);
+       arcn->nlen = cnt + l_strncpy(dest, hd->name, MIN(TNMSZ + 1, sizeof(arcn->name) 
+- cnt) - 1);
        arcn->name[arcn->nlen] = '\0';
 
        /*

PS : I've finished to merge diffs from OpenBSD last week, but diffs
w/ NetBSD are really big... so, be patient :P

Cyrille.
-- 
Cyrille Lefevre                 mailto:[EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to