diff options
author | Julian Andres Klode <jak@debian.org> | 2016-09-18 13:24:35 +0200 |
---|---|---|
committer | Julian Andres Klode <jak@debian.org> | 2016-09-18 14:17:17 +0200 |
commit | 708e2f1fe99e6f067292bc909f03f12c181e4798 (patch) | |
tree | 61100af61c2d73747fd2e1299f059c198350171f /apt-pkg | |
parent | acddd9188c21c2e13aff5cea3a82f2d01aff788b (diff) | |
download | apt-708e2f1fe99e6f067292bc909f03f12c181e4798.tar.gz |
VersionHash: Do not skip too long dependency lines
If the dependency line does not contain spaces in the repository
but does in the dpkg status file (because dpkg normalized the
dependency list), the dpkg line might be longer than the line
in the repository. If it now happens to be longer than 1024
characters, it would be skipped, causing the hashes to be
out of date.
Note that we have to bump the minor cache version again as
this changes the format slightly, and we might get mismatches
with an older src cache otherwise.
Fixes Debian/apt#23
Diffstat (limited to 'apt-pkg')
-rw-r--r-- | apt-pkg/deb/deblistparser.cc | 4 | ||||
-rw-r--r-- | apt-pkg/pkgcache.cc | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index f7f64debd..99e806470 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -344,14 +344,14 @@ unsigned short debListParser::VersionHash() { const char *Start; const char *End; - if (Section.Find(I,Start,End) == false || End - Start >= (signed)sizeof(S)) + if (Section.Find(I,Start,End) == false) continue; /* Strip out any spaces from the text, this undoes dpkgs reformatting of certain fields. dpkg also has the rather interesting notion of reformatting depends operators < -> <= */ char *J = S; - for (; Start != End; ++Start) + for (; Start != End && (J - S) < sizeof(S); ++Start) { if (isspace_ascii(*Start) != 0) continue; diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc index 27a0ba035..b4c232f8c 100644 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@ -59,7 +59,7 @@ pkgCache::Header::Header() /* Whenever the structures change the major version should be bumped, whenever the generator changes the minor version should be bumped. */ APT_HEADER_SET(MajorVersion, 10); - APT_HEADER_SET(MinorVersion, 6); + APT_HEADER_SET(MinorVersion, 7); APT_HEADER_SET(Dirty, false); APT_HEADER_SET(HeaderSz, sizeof(pkgCache::Header)); |