X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=tar.c;h=97639346d557bddd16a12bf7c7b9cedc5cceb397;hb=a547751988577b94d9cefd260173ec7e69b8669c;hp=6a0b3b32963aa4e15685d76a105d04c7626c58ba;hpb=636335dbb356165e1d3e7cf91c416696d8b93910;p=debian%2Fpax diff --git a/tar.c b/tar.c index 6a0b3b3..9763934 100644 --- a/tar.c +++ b/tar.c @@ -43,6 +43,7 @@ static const char rcsid[] = "$OpenBSD: tar.c,v 1.41 2006/03/04 20:24:55 otto Exp #endif /* not lint */ #include +#include #include #include #include @@ -763,6 +764,12 @@ ustar_rd(ARCHD *arcn, char *buf) /* * see if the filename is split into two parts. if, so joint the parts. * we copy the prefix first and add a / between the prefix and name. + * + * the length passed to l_strncpy must be the length of the field + * being copied *from*, since these fields are NOT null terminated + * when full. the destination buffer is plenty big enough to hold + * the longest supported ustar path length, so there's no need + * to check against that. */ dest = arcn->name; if (*(hd->prefix) != '\0') {