diff options
author | Michael Vogt <mvo@debian.org> | 2014-07-16 15:48:05 +0200 |
---|---|---|
committer | Michael Vogt <mvo@debian.org> | 2014-07-16 15:50:52 +0200 |
commit | 9c3e15ab5f8b5864c43a08065a6bc8cf376fd138 (patch) | |
tree | 188c459b8a939962492b5ebbae45a57e5bfcc413 | |
parent | b00efeaa5b0807fa1338ba8dd89f9b5e0ccbde60 (diff) |
Do not crash for apt-get install /dev/null
Thanks to Jakub Wilk for the bugreport.
Closes: #754904
-rw-r--r-- | apt-pkg/cacheset.cc | 2 | ||||
-rwxr-xr-x | test/integration/test-apt-get-install-deb | 30 |
2 files changed, 32 insertions, 0 deletions
diff --git a/apt-pkg/cacheset.cc b/apt-pkg/cacheset.cc index 346bad3aa..d95a32aff 100644 --- a/apt-pkg/cacheset.cc +++ b/apt-pkg/cacheset.cc @@ -450,6 +450,8 @@ bool VersionContainerInterface::FromString(VersionContainerInterface * const vci if(FileExists(pkg)) { PackageContainerInterface::FromString(&pkgset, Cache, pkg, helper); + if(pkgset.size() == 0) + return false; return VersionContainerInterface::FromPackage(vci, Cache, pkgset.begin(), fallback, helper); } diff --git a/test/integration/test-apt-get-install-deb b/test/integration/test-apt-get-install-deb new file mode 100755 index 000000000..700009da5 --- /dev/null +++ b/test/integration/test-apt-get-install-deb @@ -0,0 +1,30 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture "i386" + +# regression test for #754904 +testequal 'E: Unable to locate package /dev/null' aptget install -qq /dev/null + +# and ensure we fail for invalid debs +cat > foo.deb <<EOF +I'm not a deb, I'm a teapot. +EOF +testequal 'E: Sub-process Popen returned an error code (100) +E: Encountered a section with no Package: header +E: Problem with MergeLister for ./foo.deb +E: The package lists or status file could not be parsed or opened.' aptget install -qq ./foo.deb + +# fakeroot is currently not found, framwork needs updating +# +#buildsimplenativepackage 'foo' 'all' '1.0' +# +#testequal 'Selecting previously unselected package foo. +#(Reading database ... 0 files and directories currently installed.) +# Preparing to unpack .../incoming/foo_1.0_all.deb ... +#Unpacking foo (1.0) ... +#Setting up foo (1.0) ...' aptget install -qq ./incoming/foo_1.0_all.deb |