Package: release.debian.org Severity: normal Tags: jessie User: release.debian....@packages.debian.org Usertags: pu
The APT team would like to update APT to 1.0.9.8.2 in stable, with the following changes (full diff | filterdiff -p1 -x "po/*.po*" is attached): + [ David Kalnischkies ] + * hide first pdiff merge failure debug message (Closes: 793444) -> This was a debugging message that was printed by default + * mark again deps of pkgs in APT::Never-MarkAuto-Sections as manual. + Thanks to Raphaël Hertzog and Adam Conrad for detailed reports and initial patches + (Closes: 793360) (LP: 1479207) -> Dependencies of meta packages were not marked as manually installed + + [ Julian Andres Klode ] + * Do not parse Status fields from remote sources -> Remote sources could set "Status: install ok installed" on a package making APT believe that the package was already installed, and causing APT to "upgrade" it during an 'apt upgrade' or 'apt-get dist-upgrade' run. While this sounds like a horrible security issue, because it can be used to forcibly install new packages, the impact is not high: Sources could set the Essential field on any package which has almost the same effect, although being listed in the NEW installs section instead of the upgrade section. + [ Michael Vogt ] + * Use xgettext --no-location in make update-pot -> This (and two other sorting changes) in po/makefile are just there to clean up our pot file handling, as that currently depends on the order in the file system, and thus produces a huge diff with every release, as the files are found in a different order and because line numbers have changed. -- System Information: Debian Release: stretch/sid APT prefers unstable APT policy: (900, 'unstable'), (100, 'experimental'), (1, 'buildd-experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.1.0-2-amd64 (SMP w/4 CPU cores) Locale: LANG=en_IE.UTF-8, LC_CTYPE=en_IE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) -- Julian Andres Klode - Debian Developer, Ubuntu Member See http://wiki.debian.org/JulianAndresKlode and http://jak-linux.org/. Be friendly, do not top-post, and follow RFC 1855 "Netiquette". - If you don't I might ignore you.
diff -Nru apt-1.0.9.8.1/apt-pkg/acquire-item.cc apt-1.0.9.8.2/apt-pkg/acquire-item.cc --- apt-1.0.9.8.1/apt-pkg/acquire-item.cc 2015-06-10 09:40:35.000000000 +0200 +++ apt-1.0.9.8.2/apt-pkg/acquire-item.cc 2015-09-15 17:08:27.000000000 +0200 @@ -834,7 +834,8 @@ // first failure means we should fallback State = StateErrorDiff; - std::clog << "Falling back to normal index file acquire" << std::endl; + if (Debug) + std::clog << "Falling back to normal index file acquire" << std::endl; new pkgAcqIndex(Owner, RealURI, Description,Desc.ShortDesc, ExpectedHash); } diff -Nru apt-1.0.9.8.1/apt-pkg/deb/debindexfile.cc apt-1.0.9.8.2/apt-pkg/deb/debindexfile.cc --- apt-1.0.9.8.1/apt-pkg/deb/debindexfile.cc 2015-06-10 09:40:35.000000000 +0200 +++ apt-1.0.9.8.2/apt-pkg/deb/debindexfile.cc 2015-09-15 17:08:27.000000000 +0200 @@ -621,7 +621,7 @@ FileFd Pkg(File,FileFd::ReadOnly, FileFd::Extension); if (_error->PendingError() == true) return false; - debListParser Parser(&Pkg); + debStatusListParser Parser(&Pkg); if (_error->PendingError() == true) return false; diff -Nru apt-1.0.9.8.1/apt-pkg/deb/deblistparser.cc apt-1.0.9.8.2/apt-pkg/deb/deblistparser.cc --- apt-1.0.9.8.1/apt-pkg/deb/deblistparser.cc 2015-06-10 09:40:35.000000000 +0200 +++ apt-1.0.9.8.2/apt-pkg/deb/deblistparser.cc 2015-09-15 17:08:27.000000000 +0200 @@ -333,7 +333,7 @@ return Result; } /*}}}*/ -// ListParser::ParseStatus - Parse the status field /*{{{*/ +// StatusListParser::ParseStatus - Parse the status field /*{{{*/ // --------------------------------------------------------------------- /* Status lines are of the form, Status: want flag status @@ -345,6 +345,11 @@ bool debListParser::ParseStatus(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver) { + return true; +} +bool debStatusListParser::ParseStatus(pkgCache::PkgIterator &Pkg, + pkgCache::VerIterator &Ver) +{ const char *Start; const char *Stop; if (Section.Find("Status",Start,Stop) == false) diff -Nru apt-1.0.9.8.1/apt-pkg/deb/deblistparser.h apt-1.0.9.8.2/apt-pkg/deb/deblistparser.h --- apt-1.0.9.8.1/apt-pkg/deb/deblistparser.h 2015-06-10 09:40:35.000000000 +0200 +++ apt-1.0.9.8.2/apt-pkg/deb/deblistparser.h 2015-09-15 17:08:27.000000000 +0200 @@ -117,4 +117,11 @@ : debListParser(File, Arch) {}; }; +class APT_HIDDEN debStatusListParser : public debListParser +{ + public: + virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver); + debStatusListParser(FileFd *File) + : debListParser(File) {}; +}; #endif diff -Nru apt-1.0.9.8.1/apt-pkg/depcache.cc apt-1.0.9.8.2/apt-pkg/depcache.cc --- apt-1.0.9.8.1/apt-pkg/depcache.cc 2015-06-10 09:40:35.000000000 +0200 +++ apt-1.0.9.8.2/apt-pkg/depcache.cc 2015-09-15 17:08:27.000000000 +0200 @@ -1103,7 +1103,12 @@ if (DebugMarker == true) std::clog << OutputInDepth(Depth) << "MarkInstall " << Pkg << " FU=" << FromUser << std::endl; - DepIterator Dep = P.InstVerIter(*this).DependsList(); + VerIterator const PV = P.InstVerIter(*this); + if (unlikely(PV.end() == true)) + return false; + bool const PinNeverMarkAutoSection = (PV->Section != 0 && ConfigValueInSubTree("APT::Never-MarkAuto-Sections", PV.Section())); + + DepIterator Dep = PV.DependsList(); for (; Dep.end() != true;) { // Grok or groups @@ -1226,7 +1231,7 @@ continue; } // now check if we should consider it a automatic dependency or not - if(InstPkg->CurrentVer == 0 && InstVer->Section != 0 && ConfigValueInSubTree("APT::Never-MarkAuto-Sections", InstVer.Section())) + if(InstPkg->CurrentVer == 0 && PinNeverMarkAutoSection) { if(DebugAutoInstall == true) std::clog << OutputInDepth(Depth) << "Setting NOT as auto-installed (direct " diff -Nru apt-1.0.9.8.1/configure apt-1.0.9.8.2/configure --- apt-1.0.9.8.1/configure 2015-06-10 09:40:53.000000000 +0200 +++ apt-1.0.9.8.2/configure 2015-09-15 17:08:33.000000000 +0200 @@ -2436,7 +2436,7 @@ PACKAGE="apt" -PACKAGE_VERSION="1.0.9.8.1" +PACKAGE_VERSION="1.0.9.8.2" PACKAGE_MAIL="APT Development Team <de...@lists.debian.org>" cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" diff -Nru apt-1.0.9.8.1/configure.ac apt-1.0.9.8.2/configure.ac --- apt-1.0.9.8.1/configure.ac 2015-06-10 09:40:52.000000000 +0200 +++ apt-1.0.9.8.2/configure.ac 2015-09-15 17:08:32.000000000 +0200 @@ -18,7 +18,7 @@ AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in) PACKAGE="apt" -PACKAGE_VERSION="1.0.9.8.1" +PACKAGE_VERSION="1.0.9.8.2" PACKAGE_MAIL="APT Development Team <de...@lists.debian.org>" AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE") AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"$PACKAGE_VERSION") diff -Nru apt-1.0.9.8.1/debian/changelog apt-1.0.9.8.2/debian/changelog --- apt-1.0.9.8.1/debian/changelog 2015-06-10 09:40:35.000000000 +0200 +++ apt-1.0.9.8.2/debian/changelog 2015-09-15 17:08:27.000000000 +0200 @@ -1,3 +1,19 @@ +apt (1.0.9.8.2) jessie; urgency=medium + + [ David Kalnischkies ] + * hide first pdiff merge failure debug message (Closes: 793444) + * mark again deps of pkgs in APT::Never-MarkAuto-Sections as manual. + Thanks to Raphaël Hertzog and Adam Conrad for detailed reports and initial patches + (Closes: 793360) (LP: 1479207) + + [ Julian Andres Klode ] + * Do not parse Status fields from remote sources + + [ Michael Vogt ] + * Use xgettext --no-location in make update-pot + + -- Julian Andres Klode <j...@debian.org> Tue, 15 Sep 2015 16:48:35 +0200 + apt (1.0.9.8.1) stable; urgency=medium [ David Kalnischkies ] diff -Nru apt-1.0.9.8.1/debian/gbp.conf apt-1.0.9.8.2/debian/gbp.conf --- apt-1.0.9.8.1/debian/gbp.conf 2015-06-10 09:40:35.000000000 +0200 +++ apt-1.0.9.8.2/debian/gbp.conf 2015-09-15 17:08:27.000000000 +0200 @@ -4,4 +4,4 @@ debian-branch = debian/jessie debian-tag = %(version)s export-dir = ../build-area -sign-tags = True \ No newline at end of file +sign-tags = True diff -Nru apt-1.0.9.8.1/doc/apt-verbatim.ent apt-1.0.9.8.2/doc/apt-verbatim.ent --- apt-1.0.9.8.1/doc/apt-verbatim.ent 2015-06-10 09:40:52.000000000 +0200 +++ apt-1.0.9.8.2/doc/apt-verbatim.ent 2015-09-15 17:08:32.000000000 +0200 @@ -225,7 +225,7 @@ "> <!-- this will be updated by 'prepare-release' --> -<!ENTITY apt-product-version "1.0.9.8.1"> +<!ENTITY apt-product-version "1.0.9.8.2"> <!-- (Code)names for various things used all over the place --> <!ENTITY oldstable-codename "wheezy"> diff -Nru apt-1.0.9.8.1/doc/po/apt-doc.pot apt-1.0.9.8.2/doc/po/apt-doc.pot --- apt-1.0.9.8.1/doc/po/apt-doc.pot 2015-06-10 09:40:50.000000000 +0200 +++ apt-1.0.9.8.2/doc/po/apt-doc.pot 2015-09-15 17:08:27.000000000 +0200 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: apt-doc 1.0.9.8\n" +"Project-Id-Version: apt-doc 1.0.9.8.2\n" "Report-Msgid-Bugs-To: APT Development Team <de...@lists.debian.org>\n" -"POT-Creation-Date: 2015-06-10 09:40+0200\n" +"POT-Creation-Date: 2015-09-15 14:59+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <l...@li.org>\n" diff -Nru apt-1.0.9.8.1/po/makefile apt-1.0.9.8.2/po/makefile --- apt-1.0.9.8.1/po/makefile 2015-06-10 09:40:35.000000000 +0200 +++ apt-1.0.9.8.2/po/makefile 2015-09-15 17:08:27.000000000 +0200 @@ -15,7 +15,7 @@ include ../buildlib/defaults.mak CATALOGS := $(addsuffix .gmo, $(shell sed -e '/^\#/ d' -e '/^$$/ d' LINGUAS | tr '\n' ' ')) -DOMAINS := $(notdir $(wildcard $(PO_DOMAINS)/*)) +DOMAINS := $(sort $(notdir $(wildcard $(PO_DOMAINS)/*))) POTFILES := $(addsuffix .pot,$(addprefix $(PO)/,$(DOMAINS))) # Construct a list of all mo files for all domains under $(PO_DOMAINS) @@ -37,9 +37,10 @@ cmp --silent $(PO)/domains/$*/sh.pot.tmp $(PO)/domains/$*/sh.pot || \ mv $(PO)/domains/$*/sh.pot.tmp $(PO)/domains/$*/sh.pot # From C/C++ source - cat $(PO)/domains/$*/*.srclist > $(PO)/POTFILES_$*.in + cat $(PO)/domains/$*/*.srclist | sort > $(PO)/POTFILES_$*.in $(XGETTEXT) --default-domain=$* --directory=$(BASE) \ --add-comments --foreign --keyword=_ --keyword=N_ \ + --no-location \ --keyword=P_:1,2 \ --files-from=$(PO)/POTFILES_$*.in -o $(PO)/domains/$*/c.pot.tmp cmp --silent $(PO)/domains/$*/c.pot.tmp $(PO)/domains/$*/c.pot || \ diff -Nru apt-1.0.9.8.1/test/integration/framework apt-1.0.9.8.2/test/integration/framework --- apt-1.0.9.8.1/test/integration/framework 2015-06-10 09:40:35.000000000 +0200 +++ apt-1.0.9.8.2/test/integration/framework 2015-09-15 17:08:27.000000000 +0200 @@ -508,10 +508,12 @@ -- Joe Sixpack <j...@example.org> $(date -R)" > ${BUILDDIR}/debian/changelog echo "Source: $NAME -Section: $SECTION Priority: $PRIORITY Maintainer: Joe Sixpack <j...@example.org> Standards-Version: 3.9.3" > ${BUILDDIR}/debian/control + if [ "$SECTION" != '<none>' ]; then + echo "Section: $SECTION" >> ${BUILDDIR}/debian/control + fi local BUILDDEPS="$(echo "$DEPENDENCIES" | grep '^Build-')" test -z "$BUILDDEPS" || echo "$BUILDDEPS" >> ${BUILDDIR}/debian/control echo " diff -Nru apt-1.0.9.8.1/test/integration/test-apt-never-markauto-sections apt-1.0.9.8.2/test/integration/test-apt-never-markauto-sections --- apt-1.0.9.8.1/test/integration/test-apt-never-markauto-sections 1970-01-01 01:00:00.000000000 +0100 +++ apt-1.0.9.8.2/test/integration/test-apt-never-markauto-sections 2015-09-15 17:08:27.000000000 +0200 @@ -0,0 +1,106 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'amd64' 'i386' + +aptconfig dump --no-empty --format '%v%n' APT::Never-MarkAuto-Sections > nevermarkauto.sections +testsuccess grep '^metapackages$' nevermarkauto.sections + +# this is a very crude regression test, not a "this is how it should be" test: +# In theory mydesktop-core and texteditor should be marked as manual, but +# texteditor is installed as a dependency of bad-texteditor, not of +# mydesktop-core and mydesktop-core is removed while bad-texteditor is +# installed losing the manual bit as the problem resolver will later decide to +# drop bad-texteditor and re-instate mydesktop-core which is considered an +# auto-install at that point (in theory the never-auto handling should be +# copied to this place – as to the many other places dependencies are resolved +# 'by hand' instead of via MarkInstall AutoInst… +# +# Both could be fixed if apt would figure out early that installing +# bad-texteditor is a bad idea and eventually it should (as mydesktop-core is +# a direct descendant of mydesktop which was a user-request mydesktop-core should +# be as protected from removal as mydesktop is), but this is hard in the general case +# as with more or-groups and provides you can produce 'legal' examples for this. + +buildsimplenativepackage 'mydesktop' 'all' '1' 'unstable' 'Depends: mydesktop-core, foreignpkg +Recommends: notavailable' '' 'metapackages' +buildsimplenativepackage 'mydesktop-core' 'amd64' '1' 'unstable' 'Depends: bad-texteditor | texteditor, browser (>= 42), nosection, foreignpkg +Recommends: notavailable +Multi-Arch: foreign' '' 'metapackages' +buildsimplenativepackage 'browser' 'amd64' '41' 'stable' +buildsimplenativepackage 'browser' 'amd64' '42' 'unstable' +buildsimplenativepackage 'texteditor' 'amd64' '1' 'stable' +buildsimplenativepackage 'bad-texteditor' 'amd64' '1' 'stable' 'Depends: texteditor +Conflicts: mydesktop-core' +buildsimplenativepackage 'nosection' 'amd64' '1' 'stable' '' '' '<none>' +buildsimplenativepackage 'foreignpkg' 'i386' '1' 'stable' 'Multi-Arch: foreign' +setupaptarchive + +testsuccess aptcache show nosection +testfailure grep 'Section' rootdir/tmp/testsuccess.output +testequal 'dpkg' aptmark showmanual + +testsuccess aptget install mydesktop -y -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 + +testequal 'browser +dpkg +foreignpkg:i386 +mydesktop +nosection' aptmark showmanual +testmarkedauto 'mydesktop-core' 'texteditor' + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following packages will be REMOVED: + mydesktop mydesktop-core texteditor +0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded. +Remv mydesktop [1] +Remv mydesktop-core [1] +Remv texteditor [1]' aptget autoremove mydesktop -s + +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following packages will be REMOVED: + mydesktop mydesktop-core texteditor +0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded. +Remv mydesktop [1] +Remv mydesktop-core [1] +Remv texteditor [1]' aptget autoremove texteditor -s +testsuccess aptget autoremove texteditor -y + +testdpkgnotinstalled mydesktop mydesktop-core texteditor +testdpkginstalled browser + +testequal 'browser +dpkg +foreignpkg:i386 +nosection' aptmark showmanual +testmarkedauto + +# test that installed/upgraded auto-pkgs are not set to manual + +testsuccess aptget install browser=41 -y --force-yes + +testequal 'browser +dpkg +foreignpkg:i386 +nosection' aptmark showmanual +testmarkedauto +testsuccess aptmark auto browser +testmarkedauto 'browser' +testsuccess aptmark auto nosection +testmarkedauto 'browser' 'nosection' +testequal 'dpkg +foreignpkg:i386' aptmark showmanual + +testsuccess aptget install mydesktop -y + +testequal 'dpkg +foreignpkg:i386 +mydesktop' aptmark showmanual +testmarkedauto 'browser' 'nosection' 'mydesktop-core' 'texteditor' diff -Nru apt-1.0.9.8.1/test/integration/test-security-no-remote-status apt-1.0.9.8.2/test/integration/test-security-no-remote-status --- apt-1.0.9.8.1/test/integration/test-security-no-remote-status 1970-01-01 01:00:00.000000000 +0100 +++ apt-1.0.9.8.2/test/integration/test-security-no-remote-status 2015-09-15 17:08:27.000000000 +0200 @@ -0,0 +1,30 @@ +#!/bin/sh +# +# Test that packages from remote sources cannot set the Status field. +# +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'amd64' + +TMPDIR=$(readlink -f .) + +insertpackage 'unstable' 'pretends-installed' 'all' '1' 'Status: install ok installed' +insertinstalledpackage 'really-installed' 'all' '1' +setupaptarchive + +testequal "pretends-installed: + Installed: (none) + Candidate: 1 + Version table: + 1 0 + 500 file:${TMPDIR}/aptarchive/ unstable/main amd64 Packages" aptcache policy pretends-installed + +testequal "really-installed: + Installed: 1 + Candidate: 1 + Version table: + *** 1 0 + 100 ${TMPDIR}/rootdir/var/lib/dpkg/status" aptcache policy really-installed