Package: debian-builder
Version: 1.7
Severity: grave
Tags: patch
Justification: causes non-serious data loss
The script uses %INSTALLED hash table to track the packages which was
installed on the system when script was started. Problem is, it fills this
table only when buildPackage() function called. When no argument
given, this function is not called, and %INSTALLED table is not filled,
but tidySystem() function always called on script termination,
and it does not check if %INSTALLED were initialized or not.
It then executes a command to remove packages what exist in curent system,
but not in %INSTALLED table, which is all packages in the system in this case.
This can be easily fixed, but in general, removing packages without user
confirmation is a very bad idea - debian-helper intended to be run with
root privileges, and therefore even a little bug can be the cause of
system rendered unusable.
patch:
--- debian-builder.orig 2007-12-19 11:52:39.000000000 +0500
+++ debian-builder 2007-12-19 12:03:29.000000000 +0500
@@ -637,6 +637,9 @@
sub tidySystem
{
+ if( not scalar(%INSTALLED) ) {
+ return;
+ }
my %NEW = getInstalledPackages();
my @removals;
foreach my $package ( sort keys %NEW )
-- System Information:
Debian Release: lenny/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.23ct (SMP w/2 CPU cores; PREEMPT)
Locale: LANG=ru_RU.UTF-8, LC_CTYPE=ru_RU.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages debian-builder depends on:
ii build-essential 11.3 informational list of build-essent
ii devscripts 2.10.9 Scripts to make the life of a Debi
ii dpkg-dev 1.14.7 package building tools for Debian
ii perl 5.8.8-11 Larry Wall's Practical Extraction
ii perl-modules 5.8.8-11 Core Perl modules
debian-builder recommends no packages.
-- debconf-show failed
--- debian-builder.orig 2007-12-19 11:52:39.000000000 +0500
+++ debian-builder 2007-12-19 12:03:29.000000000 +0500
@@ -637,6 +637,9 @@
sub tidySystem
{
+ if( not scalar(%INSTALLED) ) {
+ return;
+ }
my %NEW = getInstalledPackages();
my @removals;
foreach my $package ( sort keys %NEW )