Package: automake;
Reported by: Petr Hracek <phracek <at> redhat.com>
Date: Wed, 30 Jan 2013 13:33:02 UTC
Severity: normal
Tags: patch
Merged with 8343
Done: Stefano Lattarini <stefano.lattarini <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Petr Hracek <phracek <at> redhat.com> To: Stefano Lattarini <stefano.lattarini <at> gmail.com> Cc: 13588 <at> debbugs.gnu.org, GNU bug tracker automated control server <control <at> debbugs.gnu.org>, Jack Kelly <jack <at> jackkelly.name>, "automake-patches <at> gnu.org" <automake-patches <at> gnu.org> Subject: bug#13588: Pax hangs in case big UID Date: Tue, 23 Apr 2013 17:04:36 +0200
Hello Stefano, I was a little bit busy. From my point of view user is not informed that his UID is too big. I think that it should be mentioned and visible directly on the screen. But as I mentioned it is my point of view. Here are results: test <at> kiasportyw: ~/mycproject$ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking how to create a ustar tar archive... none checking for style of include used by make... GNU checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking dependency style of gcc... gcc3 checking for pthread_create in -lpthread... yes checking for pthread_join in -lpthread... yes checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking dependency style of gcc... (cached) gcc3 checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: executing depfiles commands test <at> kiasportyw: ~/mycproject$ and in config.log file is mentioned: tar (GNU tar) 1.26 Copyright (C) 2011 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by John Gilmore and Jay Fenlason. configure:2360: $? = 0 configure:2400: tardir=conftest.dir && eval tar --format=ustar -chf - "$tardir" >conftest.tar tar: value 17000000 out of uid_t range 0..2097151 tar: Exiting with failure status due to previous errors configure:2403: $? = 2 configure:2400: tardir=conftest.dir && eval pax -L -x ustar -w "$tardir" >conftest.tar pax: Ustar header field is too small for conftest.dir pax: Ustar header field is too small for conftest.dir/file configure:2403: $? = 1 configure: 2421: UID '17000000' too large for ustar configure:2400: tardir=conftest.dir && eval find "$tardir" -print | cpio -o -H ustar -L >conftest.tar 5 blocks configure:2403: $? = 0 configure:2400: tardir=conftest.dir && eval false >conftest.tar configure:2403: $? = 1 configure:2443: result: none configure:2463: checking for style of include used by make configure:2491: result: GNU configure:2562: checking for gcc configure:2578: found /usr/bin/gcc configure:2589: result: gcc configure:2818: checking for C compiler version configure:2827: gcc --version >&5 Best regards Petr On 04/23/2013 10:45 AM, Stefano Lattarini wrote: > On 04/22/2013 03:55 PM, Stefano Lattarini wrote: >> Hi Peter, thanks for the feedback. >> >> On 04/22/2013 03:21 PM, Petr Hracek wrote: >>> Hello Stefano, >>> >>> thanks for the patch. All is working properly. >>> User is informed that UID is not enough smaller and configure script does not failed. >>> >> Good to know the logic is sound. However, I now notice that there >> is still a problem with the output of configure :-/ (details below). >> >>> Result is below: >>> test <at> localhost: ~/mycproject$ id >>> uid=17000000(test) gid=1001(test) groups=1001(test) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 >>> test <at> localhost: ~/mycproject$ ./configure >>> checking for a BSD-compatible install... /usr/bin/install -c >>> checking whether build environment is sane... yes >>> checking for a thread-safe mkdir -p... /usr/bin/mkdir -p >>> checking for gawk... gawk >>> checking whether make sets $(MAKE)... yes >>> checking how to create a ustar tar archive... checking whether UID '17000000' is small enough for ustar... no >>> none >>> >> Oops, there are two messages are crossing. This is bad. >> I think the best solution at this point is simply to report the too-high UID >> only in the generated config.log rather than in the console output. Updated >> patch coming up soonish (I hope)... >> > Here it is. I'd appreciate further testing, if possible. > > Thanks, > Stefano > > ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- 8< ---- > > From bfb877d2337acfe3af1ef0d6e405f834a9287a37 Mon Sep 17 00:00:00 2001 > Message-Id: <bfb877d2337acfe3af1ef0d6e405f834a9287a37.1366706596.git.stefano.lattarini <at> gmail.com> > From: Stefano Lattarini <stefano.lattarini <at> gmail.com> > Date: Sun, 17 Feb 2013 16:42:46 +0100 > Subject: [PATCH] tar: pax could hang configure when big UID are involved > > See automake bug#8343 and bug#13588. > > Tom Rini tom_rini <at> mentor.com says (in bug#8343): > > When the user has a UID or GID that is larger than the ustar format > supports, pax does not error out gracefully in some cases (FC13). > > Marc Herbert <marc.herbert <at> intel.com> adds (in bug#8343): > > When "configure" is run by a user with an UID bigger than 21 bits, > BSD pax 3.4 aborts when trying to create the 'conftest.tar' test > archive and leaves an empty or corrupted conftest.tar file behind. > In the next step, pax tries to extract this incomplete or corrupted > archive and this *** hangs the whole ./configure script ***. > > Note: GNU cpio 2.9 pretends to pass the test but it is a LIE: it > silently truncates any big UID to its lower 21 bits. I don't know > what can be the consequences of this lie. > > Months later, Petr Hracek <phracek <at> redhat.com> reports a similar issue > (in bug#13588) for Fedora 17: > > I am trying to solve problem in case a user is created with big > UID and during configuration pax hangs with message > > ATTENTION! pax archive volume change required. > Ready for archive volume: 1 > Input archive name or "." to quit pax. > Archive name > > > and needs user interaction. > > Reference: <https://bugzilla.redhat.com/show_bug.cgi?id=843376> > > Time to fix this issue, on the line of a preliminary patch provided by > Petr Hracek in bug#13588. > > * m4/tar.m4 (_AM_PROG_TAR): Don't use 'pax' if the UID or GID of the > current user is too high (> 2097151). > * NEWS: Update. > * THANKS: Likewise. > > Signed-off-by: Stefano Lattarini <stefano.lattarini <at> gmail.com> > --- > NEWS | 6 ++++++ > THANKS | 3 +++ > m4/tar.m4 | 26 +++++++++++++++++++++++++- > 3 files changed, 34 insertions(+), 1 deletion(-) > > diff --git a/NEWS b/NEWS > index f9a1fb1..863ffdf 100644 > --- a/NEWS > +++ b/NEWS > @@ -78,6 +78,12 @@ New in 1.13.2: > > * Bugs fixed: > > + - When the 'ustar' option is used, the generated configure script no > + longer risks hanging during the tests for the availability of the > + 'pax' utility, even if the user running configure has a UID or GID > + that requires more than 21 bits to be represented. > + See automake bug#8343 and bug#13588. > + > - The obsolete macros AM_CONFIG_HEADER or AM_PROG_CC_STDC work once > again, as they did in Automake 1.12.x (albeit printing runtime > warnings in the 'obsolete' category). Removing them has turned > diff --git a/THANKS b/THANKS > index 66498d4..a574909 100644 > --- a/THANKS > +++ b/THANKS > @@ -224,6 +224,7 @@ Luo Yi luoyi.ly <at> gmail.com > Maciej Stachowiak mstachow <at> mit.edu > Maciej W. Rozycki macro <at> ds2.pg.gda.pl > Manu Rouat emmanuel.rouat <at> wanadoo.fr > +Marc Herbert marc.herbert <at> intel.com > Marcus Brinkmann Marcus.Brinkmann <at> ruhr-uni-bochum.de > Marcus G. Daniels mgd <at> ute.santafe.edu > Marius Vollmer mvo <at> zagadka.ping.de > @@ -311,6 +312,7 @@ Peter Muir iyhi <at> yahoo.com > Peter O'Gorman peter <at> pogma.com > Peter Rosin peda <at> lysator.liu.se > Peter Seiderer seiderer123 <at> ciselant.de > +Petr Hracek phracek <at> redhat.com > Petter Reinholdtsen pere <at> hungry.com > Petteri Räty betelgeuse <at> gentoo.org > Phil Edwards phil <at> jaj.com > @@ -391,6 +393,7 @@ Tim Rice tim <at> multitalents.net > Tim Van Holder tim.van.holder <at> pandora.be > Toshio Kuratomi toshio <at> tiki-lounge.com > Tom Epperly tepperly <at> llnl.gov > +Tom Rini tom_rini <at> mentor.com > Ulrich Drepper drepper <at> gnu.ai.mit.edu > Ulrich Eckhardt eckhardt <at> satorlaser.com > Václav Haisman V.Haisman <at> sh.cvut.cz > diff --git a/m4/tar.m4 b/m4/tar.m4 > index ec8c83e..61c1206 100644 > --- a/m4/tar.m4 > +++ b/m4/tar.m4 > @@ -81,7 +81,31 @@ do > AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) > rm -rf conftest.dir > if test -s conftest.tar; then > - AM_RUN_LOG([$am__untar <conftest.tar]) > + m4_if([$1], [ustar], [ > + if test "$_am_tool" = pax; then > + # Automake bugs #8343 and #13588: 'pax' can hang when UIDs > + # or GIDs are involved that requires more than 21 bits to > + # be stored. > + am_max_uid=2097151 # 2^21 - 1 > + am_max_gid=$am_max_uid > + # The $UID and $GID variables are not portable, so we need to > + # resort to the POSIX-mandated id(1) utility. Errors here are > + # definitely unexpected, so allow the users to see them (i.e., > + # no stderr redirection). > + am_uid=`id -u || echo unknown` > + am_gid=`id -g || echo unknown` > + if test $am_uid -le $am_max_uid; then :; else > + AS_ECHO(["$as_me:$LINENO: UID '$am_uid' too large for ustar"]) \ > + >&AS_MESSAGE_LOG_FD > + continue > + fi > + if test $am_gid -le $am_max_gid; then :; else > + AS_ECHO(["$as_me:$LINENO: GID '$am_gid' too large for ustar"]) \ > + >&AS_MESSAGE_LOG_FD > + continue > + fi > + fi > + ]) # $1 == ustar > grep GrepMe conftest.dir/file >/dev/null 2>&1 && break > fi > done -- Best regards / S pozdravem Petr Hracek
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.