diff options
-rw-r--r-- | apt-pkg/deb/deblistparser.cc | 2 | ||||
-rwxr-xr-x | test/integration/test-apt-get-install-deb | 24 |
2 files changed, 18 insertions, 8 deletions
diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index e24ced271..f7f64debd 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -999,7 +999,7 @@ bool debListParser::SameVersion(unsigned short const Hash, /*{{{*/ // status file is parsed last, so the first version we encounter is // probably also the version we have downloaded unsigned long long const Size = Section.FindULL("Size"); - if (Size != 0 && Size != Ver->Size) + if (Size != 0 && Ver->Size != 0 && Size != Ver->Size) return false; // available everywhere, but easier to check here than to include in VersionHash unsigned char MultiArch = ParseMultiArch(false); diff --git a/test/integration/test-apt-get-install-deb b/test/integration/test-apt-get-install-deb index 1e9520fe6..53675c080 100755 --- a/test/integration/test-apt-get-install-deb +++ b/test/integration/test-apt-get-install-deb @@ -45,8 +45,10 @@ testsuccess aptget install ./incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 testdpkginstalled 'foo:i386' testfailure aptget install incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 cd downloaded -testsuccess aptget install "$(readlink -f ../incoming/foo_1.0_i386.deb)" -o Debug::pkgCacheGen=1 -y --allow-downgrades -testsuccess aptget install ../incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 -y --allow-downgrades +testsuccess aptget install "$(readlink -f ../incoming/foo_1.0_i386.deb)" -o Debug::pkgCacheGen=1 -y --reinstall +testfailure grep 'is already the newest version' ../rootdir/tmp/testsuccess.output +testsuccess aptget install ../incoming/foo_1.0_i386.deb -o Debug::pkgCacheGen=1 -y --reinstall +testfailure grep 'is already the newest version' ../rootdir/tmp/testsuccess.output cd .. testsuccessequal "Reading package lists... @@ -109,13 +111,21 @@ testsuccess aptget install ./incoming/pkg-as-it-should-be_0_all.deb testsuccess aptget install ./incoming/pkg-leading-newline_0_all.deb testsuccess aptget install ./incoming/pkg-trailing-newline_0_all.deb -# see if permission dropping is checked before usage +testempty apt clean if [ "$(id -u)" = '0' ]; then - apt clean + # see if permission dropping is checked before usage chmod 711 ./incoming - testsuccess aptget install -y --allow-downgrades ./incoming/pkg-as-it-should-be_0_all.deb + testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall + testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output chmod 710 ./incoming - testsuccesswithnotice aptget install -y --allow-downgrades ./incoming/pkg-as-it-should-be_0_all.deb + testsuccesswithnotice aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall + testfailure grep 'is already the newest version' rootdir/tmp/testsuccesswithnotice.output chmod 700 ./incoming - testsuccesswithnotice aptget install -y --allow-downgrades ./incoming/pkg-as-it-should-be_0_all.deb + testsuccesswithnotice aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall + testfailure grep 'is already the newest version' rootdir/tmp/testsuccesswithnotice.output +else + testsuccess aptget install -y ./incoming/pkg-as-it-should-be_0_all.deb --reinstall + testfailure grep 'is already the newest version' rootdir/tmp/testsuccess.output fi + + |