diff options
-rw-r--r-- | apt-pkg/deb/deblistparser.cc | 5 | ||||
-rwxr-xr-x | test/integration/test-dpkg-normalization | 44 |
2 files changed, 49 insertions, 0 deletions
diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 4e61f0fc2..3a26b40c4 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -372,6 +372,11 @@ unsigned short debListParser::VersionHash() string to make that not matter. */ for (; Start != End; ++Start) { + // Strip away 0: epochs from input + if (*Start == '0' && Start[1] == ':') { + Start++; // Skip the : + continue; // Skip the 0 + } if (isspace_ascii(*Start) != 0 || *Start == '=') continue; Result = AddCRC16Byte(Result, tolower_ascii_unsafe(*Start)); diff --git a/test/integration/test-dpkg-normalization b/test/integration/test-dpkg-normalization new file mode 100755 index 000000000..cfcb90d67 --- /dev/null +++ b/test/integration/test-dpkg-normalization @@ -0,0 +1,44 @@ +#!/bin/sh +set -e + +TESTDIR="$(readlink -f "$(dirname "$0")")" +. "$TESTDIR/framework" +setupenvironment +configarchitecture "i386" + +insertpackage 'unstable' 'spaces' 'i386' '1.0' 'Depends: spaces (= 1.0)' +insertpackage 'unstable' 'spaces' 'i386' '1.0' 'Depends: spaces (= 1.0)' +insertpackage 'unstable' 'lessequal' 'i386' '1.0' 'Depends: spaces (>= 1.0)' +insertpackage 'unstable' 'lessequal' 'i386' '1.0' 'Depends: spaces (> 1.0)' +insertpackage 'unstable' 'zero-epoch' 'i386' '1.0' 'Depends: spaces (< 0:1.0.0)' +insertpackage 'unstable' 'zero-epoch' 'i386' '1.0' 'Depends: spaces (< 1.0.0)' +insertpackage 'unstable' 'zero-epoch' 'i386' '0:1.0' 'Depends: spaces (< 0:1.0.0)' + +setupaptarchive + +testsuccessequal "spaces: + Installed: (none) + Candidate: 1.0 + Version table: + 1.0 500 + 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages + 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages" aptcache policy spaces + +testsuccessequal "lessequal: + Installed: (none) + Candidate: 1.0 + Version table: + 1.0 500 + 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages + 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages" aptcache policy lessequal + + + +testsuccessequal "zero-epoch: + Installed: (none) + Candidate: 1.0 + Version table: + 1.0 500 + 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages + 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages + 500 file:$TMPWORKINGDIRECTORY/aptarchive unstable/main i386 Packages" aptcache policy zero-epoch |