[pacman-dev] [PATCH] be_sync: avoid crashing on files in the root of a DB

Dave Reisner d at falconindy.com
Mon Jul 8 11:03:05 EDT 2013


On Mon, Jul 08, 2013 at 09:52:31AM -0500, Dan McGee wrote:
> On Sun, Jul 7, 2013 at 8:39 PM, Dave Reisner <d at falconindy.com> wrote:
> > On Mon, Jul 08, 2013 at 11:22:15AM +1000, Allan McRae wrote:
> >> On 08/07/13 09:53, Dave Reisner wrote:
> >> > As seen: https://bbs.archlinux.org/viewtopic.php?pid=1297766
> >>
> >> I know it takes some time, but actually explaining what was seen in that
> >> thread rather than just linking it will save everyone who looks at this
> >> commit some time.
> >>
> >
> > Fair enough... and who knows, maybe the bbs will go away some day ;)
> >
> >> > Signed-off-by: Dave Reisner <dreisner at archlinux.org>
> >> > ---
> >> >  lib/libalpm/be_sync.c | 7 +++++++
> >> >  1 file changed, 7 insertions(+)
> >> >
> >> > diff --git a/lib/libalpm/be_sync.c b/lib/libalpm/be_sync.c
> >> > index feda6f5..f3e0a33 100644
> >> > --- a/lib/libalpm/be_sync.c
> >> > +++ b/lib/libalpm/be_sync.c
> >> > @@ -561,6 +561,13 @@ static int sync_db_read(alpm_db_t *db, struct archive *archive,
> >> >             return -1;
> >> >     }
> >> >
> >> > +   if(filename == NULL) {
> >> > +           /* A file exists outside of a subdirectory. This isn't a read error, so return
> >> > +            * success and try to continue on. */
> >> > +           _alpm_log(db->handle, ALPM_LOG_DEBUG, "unknown database file: %s\n", filename);
> >>
> >> Only a debug level statement?  I think a warning would be appropriate:
> >>
> >> warning: database "foo" contains unknown file: ...
> >>
> >> But need to check where that would actually print.
> >>
> >
> > I copied this from the final else branch of the if/else tree in
> > sync_db_read() which relegates messages about unknown entries to debug
> > level as well. This was strictly for consistency -- if you'd prefer that
> > we print both of these as warnings, I can make that change as part of
> > this patch.
> 
> I think we made this a debug message to prevent it from being printed
> waaaaaay too much- aka once per directory if for some reason we added
> a few file to sync databases that older pacman versions didn't know
> about.

Aha, good point.

> It is probably OK to print the new one at warning level, but I
> wouldn't mess with the older message.

Makes sense.

I'll send a v3 which should be a nice compromise between v1 and v2.

d


More information about the pacman-dev mailing list