/tags/1.2.20-5/debian/patches/no_maxpathlen.patch |
---|
88,6 → 88,31 |
/* Empty or NULL string gets treated as "." */ |
if (path == NULL || *path == '\0') { |
@@ -67,11 +79,19 @@ openbsd_dirname(path) |
} while (endp > path && *endp == '/'); |
} |
- if (endp - path + 1 > sizeof(bname)) { |
- errno = ENAMETOOLONG; |
- return(NULL); |
+ len = endp - path + 1; |
+ |
+ if (len + 1 > allocated) { |
+ size_t new_allocated = 2*(len+1); |
+ void *new_bname = malloc(new_allocated); |
+ if (!new_bname) |
+ return NULL; |
+ allocated = new_allocated; |
+ free(bname); |
+ bname = new_bname; |
} |
- (void)strncpy(bname, path, endp - path + 1); |
- bname[endp - path + 1] = '\0'; |
+ |
+ (void)strncpy(bname, path, len); |
+ bname[len] = '\0'; |
return(bname); |
} |
--- a/lib/append.c |
+++ b/lib/append.c |
@@ -38,7 +38,7 @@ typedef struct tar_dev tar_dev_t; |
/tags/1.2.20-5/debian/patches/oldgnu_prefix.patch |
---|
0,0 → 1,21 |
Description: Detect old-style GNU headers correctly |
Author: Steinar H. Gunderson <sesse@debian.org> |
--- libtar-1.2.20.orig/lib/decode.c |
+++ libtar-1.2.20/lib/decode.c |
@@ -69,7 +69,14 @@ th_get_pathname(TAR *t) |
return NULL; |
} |
- if (t->th_buf.prefix[0] == '\0') |
+ /* |
+ * Old GNU headers (also used by newer GNU tar when doing incremental |
+ * dumps) use the POSIX prefix field for many other things, such as |
+ * mtime and ctime. New-style GNU headers don't, but also don't use the |
+ * POSIX prefix field. Thus, only honor the prefix field if the archive |
+ * is actually a POSIX archive. This is the same logic as GNU tar uses. |
+ */ |
+ if (strncmp(t->th_buf.magic, TMAGIC, TMAGLEN - 1) != 0 || t->th_buf.prefix[0] == '\0') |
{ |
sprintf(t->th_pathname, "%.100s", t->th_buf.name); |
} |
/tags/1.2.20-5/debian/patches/series |
---|
2,3 → 2,5 |
no_maxpathlen.patch |
CVE-2013-4420.patch |
th_get_size-unsigned-int.patch |
oldgnu_prefix.patch |
testsuite.patch |
/tags/1.2.20-5/debian/patches/testsuite.patch |
---|
0,0 → 1,50 |
--- a/Makefile.am |
+++ b/Makefile.am |
@@ -10,5 +10,5 @@ ACLOCAL_AMFLAGS = -I autoconf |
#@SET_MAKE@ |
-SUBDIRS = lib libtar doc |
+SUBDIRS = lib libtar doc testsuite |
--- a/doc/Makefile.in |
+++ b/doc/Makefile.in |
@@ -151,3 +151,4 @@ install: all |
echo ".so man3/@LISTHASH_PREFIX@_list_new.3" > ${DESTDIR}${mandir}/man3/$${i}.3; \ |
done |
+check: |
--- a/lib/Makefile.in |
+++ b/lib/Makefile.in |
@@ -104,3 +104,4 @@ install: ${ALL} |
${INSTALL_DATA} ${srcdir}/libtar.h ${DESTDIR}${includedir} |
${INSTALL_DATA} ../listhash/libtar_listhash.h ${DESTDIR}${includedir} |
+check: |
--- a/libtar/Makefile.in |
+++ b/libtar/Makefile.in |
@@ -76,3 +76,4 @@ install: ${ALL} |
${MKDIR} ${DESTDIR}${bindir} |
$(LIBTOOL) --mode=install ${INSTALL_PROGRAM} libtar ${DESTDIR}${bindir} |
+check: |
--- /dev/null |
+++ b/testsuite/Makefile.in |
@@ -0,0 +1,7 @@ |
+all: |
+ |
+check: ../libtar/libtar |
+ ../libtar/libtar -C ../doc -c test.tar . |
+ ../libtar/libtar -t test.tar |
+ $(RM) test.tar |
+install: |
--- a/configure.ac |
+++ b/configure.ac |
@@ -120,6 +120,6 @@ fi |
dnl ### Create output files. ####################################### |
-AC_CONFIG_FILES([Makefile lib/Makefile libtar/Makefile doc/Makefile]) |
+AC_CONFIG_FILES([Makefile lib/Makefile libtar/Makefile doc/Makefile testsuite/Makefile]) |
AC_OUTPUT |