Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Sep 2004 23:09:50 -0500
From:      Dan Nelson <dnelson@allantgroup.com>
To:        freebsd-current@freebsd.org
Cc:        kientzle@freebsd.org
Subject:   bsdtar errors storing uid/gids > 16777214
Message-ID:  <20040917040950.GA52634@dan.emsphone.com>

next in thread | raw e-mail | index | archive | help

--cNdxnHkX5QqsyA0e
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

It looks like bsdtar will create extended header entries for attributes
that would overflow the regular file header, but for the gid and uid
cases, it doesn't zero out the regular fields, and
__archive_write_format_header_ustar() ends up failing.  This bit me
when portupgrading kdebase, which installs kdesud with a group name of
"nogroup", which is -2 (aka 4294967294) on my system.

Also, there's a formatting error in tar/read.c that ends up misaligning
the date column.  %Y is 4 chars wide, but %R is 5, so the format string
with %R in it needs to lose a space.

-- 
	Dan Nelson
	dnelson@allantgroup.com

--cNdxnHkX5QqsyA0e
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=p1

Index: archive_write_set_format_pax.c
===================================================================
RCS file: /home/ncvs/src/lib/libarchive/archive_write_set_format_pax.c,v
retrieving revision 1.17
diff -u -p -r1.17 archive_write_set_format_pax.c
--- archive_write_set_format_pax.c	8 Aug 2004 02:22:48 -0000	1.17
+++ archive_write_set_format_pax.c	17 Sep 2004 04:03:19 -0000
@@ -416,6 +416,7 @@ archive_write_pax_header(struct archive 
 	/* If numeric GID is too large, add 'gid' to pax extended attrs. */
 	if (st_main->st_gid >= (1 << 20)) {
 		add_pax_attr_int(&(pax->pax_header), "gid", st_main->st_gid);
+		archive_entry_set_gid(entry_main, 0);
 		need_extension = 1;
 	}
 
@@ -431,6 +432,7 @@ archive_write_pax_header(struct archive 
 	/* If numeric UID is too large, add 'uid' to pax extended attrs. */
 	if (st_main->st_uid >= (1 << 20)) {
 		add_pax_attr_int(&(pax->pax_header), "uid", st_main->st_uid);
+		archive_entry_set_uid(entry_main, 0);
 		need_extension = 1;
 	}
 

--cNdxnHkX5QqsyA0e
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=p2

Index: read.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/tar/read.c,v
retrieving revision 1.19.2.1
diff -u -p -r1.19.2.1 read.c
--- read.c	2 Sep 2004 04:09:46 -0000	1.19.2.1
+++ read.c	16 Sep 2004 15:13:53 -0000
@@ -282,7 +282,7 @@ list_item_verbose(struct bsdtar *bsdtar,
 	if (abs(tim - now) > (365/2)*86400)
 		fmt = bsdtar->day_first ? "%e %b  %Y" : "%b %e  %Y";
 	else
-		fmt = bsdtar->day_first ? "%e %b  %R" : "%b %e  %R";
+		fmt = bsdtar->day_first ? "%e %b %R" : "%b %e %R";
 	strftime(tmp, sizeof(tmp), fmt, localtime(&tim));
 	fprintf(out, " %s ", tmp);
 	safe_fprintf(out, "%s", archive_entry_pathname(entry));

--cNdxnHkX5QqsyA0e--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040917040950.GA52634>