[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#47267: Fixing a 7-year-old bug



Summary of the problem:

* Install A with conffile F
* Remove A
* Install B with conffile F  -- B "adopts" F
* Purge A       -- BUG: F is deleted

Analysis:

When B adopts F, should F be removed from A's list of files?
If so then the bug is probably in the code that removes F
from A's list of files.

Or should F be left on A's list of files, and the purge routine
should, before deleting F, check to make sure that F does not
belong to any package besides A?
If so then the bug is probably in the code that deletes F.

Strategy:

I think that the purge code should _in any case_ be modified
so that it refrains from deleting F if F belongs to other
packages.  Even if the bug is really in the remove-F-from-A's-list
code, the modification described here will solve the problem and
will make dpkg resistant to that kind of bug.  Caveat: I don't
know what kind of performance impact this would have.

If the bug is in the remove-F-from-A's-list code then that bug
should also be fixed, of course.

Rolling up sleeves:

I don't know the dpkg code base well enough to provide a patch
that I would be sure was a complete solution and which didn't
cause unpleasant side effects.

Having said that, it looks to me as if we need to make a change
to the for loop beginning at line 402 in main/remove.c.  The
loop begins with a comment:

  /* Remove from our list any conffiles that aren't ours any more or
   * are involved in diversions, except if we are the package doing the
   * diverting.
   */

The for loop should be modified so that it satisfies this modified
description:

  /* Remove from our list any conffiles
   * that aren't ours any more, or
   * that are involved in diversions (unless we are the diverter), or
   * that also belong to other packages.
   */

Someone please help me with this so that we can close these nine
merged severity-important bug reports, the oldest of which has been
open for almost seven years!
-- 
Thomas Hood <jdthood@yahoo.co.uk>




Reply to: