summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2014-03-10 21:31:35 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2014-03-13 13:58:46 +0100
commit7ce1ac857d914f98069078b1ea70995e7b6cf764 (patch)
tree7c714e38f4fb7d29425f38556d5105f58f47644b
parentdae27c67f2219d9387274660529113cdb81a15c3 (diff)
ensure that a dot is a dot in the hook
As we deal with regex matchers here the dots are treated as wildcards if we don't take care of escaping them. Not very likely that this could be a real-world problem, but just to be sure.
-rw-r--r--debian/apt.auto-removal.sh7
-rwxr-xr-xtest/integration/test-kernel-helper-autoremove26
2 files changed, 19 insertions, 14 deletions
diff --git a/debian/apt.auto-removal.sh b/debian/apt.auto-removal.sh
index ab8201898..0c5158658 100644
--- a/debian/apt.auto-removal.sh
+++ b/debian/apt.auto-removal.sh
@@ -63,13 +63,10 @@ then
previous_version=
fi
-kernels=$(sort -u <<EOF
-$latest_version
+kernels="$(echo "$latest_version
$installed_version
$running_version
-$previous_version
-EOF
-)
+$previous_version" | sort -u | sed -e 's#\.#\\.#g' )"
generateconfig() {
cat <<EOF
diff --git a/test/integration/test-kernel-helper-autoremove b/test/integration/test-kernel-helper-autoremove
index cb1c54e81..7713c0875 100755
--- a/test/integration/test-kernel-helper-autoremove
+++ b/test/integration/test-kernel-helper-autoremove
@@ -20,8 +20,10 @@ CURRENTKERNEL="linux-image-$(uname -r)"
insertinstalledpackage "$CURRENTKERNEL" 'amd64' '1'
insertinstalledpackage 'linux-image-1.0.0-2-generic' 'amd64' '1.0.0-2'
insertinstalledpackage 'linux-image-100.0.0-1-generic' 'amd64' '100.0.0-1'
+# ensure that the '.' is really a dot and not a wildcard
+insertinstalledpackage 'linux-headers-1000000-1-generic' 'amd64' '100.0.0-1'
-testsuccess aptmark auto "$CURRENTKERNEL" 'linux-image-1.0.0-2-generic' 'linux-image-100.0.0-1-generic'
+testsuccess aptmark auto "$CURRENTKERNEL" 'linux-image-1.0.0-2-generic' 'linux-image-100.0.0-1-generic' 'linux-headers-1000000-1-generic'
cat > ./fake-dpkg <<EOF
#!/bin/sh
@@ -53,40 +55,46 @@ testprotected() {
grep -q '^[A-Z]: ' protected.list && catfail || msgpass
msgtest 'Check kernel autoremoval protection list includes' 'most recent kernel'
- grep -q '^\^linux-image-100\.0\.0-1-generic\$$' protected.list && msgpass || catfail
+ grep -q '^\^linux-image-100\\\.0\\\.0-1-generic\$$' protected.list && msgpass || catfail
msgtest 'Check kernel autoremoval protection list includes' 'running kernel'
- grep -q "^\\^linux-image-$(uname -r)\\\$\$" protected.list && msgpass || catfail
+ grep -q "^\\^linux-image-$(uname -r | sed -e 's#\.#\\\\.#g')\\\$\$" protected.list && msgpass || catfail
}
testequal "Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be REMOVED:
+ linux-headers-1000000-1-generic (100.0.0-1)
linux-image-1.0.0-2-generic (1.0.0-2)
linux-image-100.0.0-1-generic (100.0.0-1)
$CURRENTKERNEL (1)
-0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
Remv linux-image-1.0.0-2-generic [1.0.0-2]
Remv linux-image-100.0.0-1-generic [100.0.0-1]
Remv $CURRENTKERNEL [1]" aptget autoremove -sV
testprotected
msgtest 'Check kernel autoremoval protection list does not include' 'old kernel'
-grep -q '^\^linux-image-1\.0\.0-2-generic\$$' protected.list && catfail || msgpass
+grep -q '^\^linux-image-1\\\.0\\\.0-2-generic\$$' protected.list && catfail || msgpass
testequal 'Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be REMOVED:
- linux-image-1.0.0-2-generic
-0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+ linux-headers-1000000-1-generic linux-image-1.0.0-2-generic
+0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]
Remv linux-image-1.0.0-2-generic [1.0.0-2]' aptget autoremove -s
testprotected 1.0.0-2-generic
msgtest 'Check kernel autoremoval protection list includes' 'installed kernel'
-grep -q '^\^linux-image-1\.0\.0-2-generic\$$' protected.list && msgpass || catfail
+grep -q '^\^linux-image-1\\\.0\\\.0-2-generic\$$' protected.list && msgpass || catfail
testequal 'Reading package lists...
Building dependency tree...
Reading state information...
-0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget autoremove -s
+The following packages will be REMOVED:
+ linux-headers-1000000-1-generic
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv linux-headers-1000000-1-generic [100.0.0-1]' aptget autoremove -s