Date: Sun, 14 Sep 2008 13:51:35 -0700 From: "Garrett Cooper" <yanefbsd@gmail.com> To: freebsd-bugs@freebsd.org Subject: Re: bin/125932: pkg_add(1) doesn't prompt for root credentials and then fails badly Message-ID: <7d6fde3d0809141351w5683cf0q6fabc514cdec6317@mail.gmail.com> In-Reply-To: <7d6fde3d0809120030q561ecfb0r663191fe8a95f8a7@mail.gmail.com> References: <200809120700.m8C705js006421@freefall.freebsd.org> <7d6fde3d0809120030q561ecfb0r663191fe8a95f8a7@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Sep 12, 2008 at 12:30 AM, Garrett Cooper <yanefbsd@gmail.com> wrote: > On Fri, Sep 12, 2008 at 12:00 AM, Garrett Cooper <yanefbsd@gmail.com> wrote: >> The following reply was made to PR bin/125932; it has been noted by GNATS. >> >> From: "Garrett Cooper" <yanefbsd@gmail.com> >> To: "Bruce Cran" <bruce@cran.org.uk> >> Cc: bug-followup@freebsd.org >> Subject: Re: bin/125932: pkg_add(1) doesn't prompt for root credentials and then fails badly >> Date: Thu, 11 Sep 2008 23:24:33 -0700 >> >> On Tue, Sep 9, 2008 at 1:23 PM, Bruce Cran <bruce@cran.org.uk> wrote: >> > On Thu, 24 Jul 2008 11:18:31 -0700 >> > "Garrett Cooper" <yanefbsd@gmail.com> wrote: >> > >> >> On Thu, Jul 24, 2008 at 6:48 AM, Bruce Cran <bruce@cran.org.uk> wrote: >> >> >>How-To-Repeat: >> >> > Run pkg_add -r as a non-root user. >> >> >>Fix: >> >> >> >> The issue isn't the fact that you're running as non-root; it's that >> >> someone's not checking to see whether or not a fetch init succeeded >> >> (filehandle's open, writing's being done) before continuing. >> >> >> >> I'll fix this later on tonight when I get back from San Jose. >> >> >> > >> > Did you make any progress with this? >> >> I thought I made a comment about this earlier, but apparently I didn't >> send it out or it wasn't recorded: >> >> Symptom: >> >> The issue is caused by tar in the PUSHOUT macro in add/extract.c as >> identified below, during the extract. If and when the tar stuff is >> replaced with libarchive, this issue will fail sooner (and this should >> be done because this would save a lot of time and resources when >> extracting large packages like openoffice): >> >> #define PUSHOUT(todir) /* push out string */ \ >> if (where_count > (int)sizeof(STARTSTRING)-1) { \ >> strcat(where_args, "|/usr/bin/tar --unlink -xpPf - -C "); \ >> strcat(where_args, todir); \ >> if (system(where_args)) { \ /*** XXX: FAILS HERE ***/ >> cleanup(0); \ >> errx(2, "%s: can not invoke %ld byte tar pipeline: %s", \ >> __func__, (long)strlen(where_args), where_args); \ >> } \ >> >> Real problem: >> >> The actual problem is that the master and slave pkg_add processes >> aren't communicating properly with one another, s.t. the slave >> instances aren't breaking the master execution at the first sign of >> failure. >> >> HTH, >> -Garrett > > Ugh... gimme the weekend and I'll rewrite fileGetURL(..) in `lib/url.c'. > -Garrett Almost done with the coding portion. I'm going to go grab some lunch, finish that up in a few hours, test my changes a bit and if I don't run into some major roadblocks I'll have the patch posted on pastebin by no later than 10pm PST. As part of the changes I'm integrating some of the new code from Ander's SoC pkg_improved project, as he had some nice things in his revision of lib/url.c. Cheers, -Garrett
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7d6fde3d0809141351w5683cf0q6fabc514cdec6317>