summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/deb/debsrcrecords.cc9
-rw-r--r--test/integration/test-srcrecord35
2 files changed, 41 insertions, 3 deletions
diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc
index 5454d79c3..d296161d6 100644
--- a/apt-pkg/deb/debsrcrecords.cc
+++ b/apt-pkg/deb/debsrcrecords.cc
@@ -73,9 +73,12 @@ const char **debSrcRecordParser::Binaries()
char* bin = Buffer;
do {
char* binStartNext = strchrnul(bin, ',');
- char* binEnd = binStartNext - 1;
- for (; isspace_ascii(*binEnd) != 0; --binEnd)
- binEnd = 0;
+ // Found a comma, clean up any space before it
+ if (binStartNext > Buffer) {
+ char* binEnd = binStartNext - 1;
+ for (; binEnd > Buffer && isspace_ascii(*binEnd) != 0; --binEnd)
+ *binEnd = 0;
+ }
StaticBinList.push_back(bin);
if (*binStartNext != ',')
break;
diff --git a/test/integration/test-srcrecord b/test/integration/test-srcrecord
new file mode 100644
index 000000000..34de2be72
--- /dev/null
+++ b/test/integration/test-srcrecord
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'native'
+
+cat > aptarchive/Sources <<EOF
+Package: space-before-comma
+Binary: space-before-comma1 , space-before-comma2
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+
+Package: broken-field
+Binary:, broken-field2
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+
+Package: broken-field-b
+Binary: , broken-field-b2
+Version: 1.0
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: all
+EOF
+
+setupaptarchive --no-update
+
+testsuccess aptget update
+testsuccess aptcache showsrc space-before-comma1
+testsuccess aptcache showsrc broken-field2
+testsuccess aptcache showsrc broken-field-b2