summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2014-07-16 15:48:05 +0200
committerMichael Vogt <mvo@debian.org>2014-07-16 15:50:52 +0200
commit9c3e15ab5f8b5864c43a08065a6bc8cf376fd138 (patch)
tree188c459b8a939962492b5ebbae45a57e5bfcc413
parentb00efeaa5b0807fa1338ba8dd89f9b5e0ccbde60 (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.cc2
-rwxr-xr-xtest/integration/test-apt-get-install-deb30
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