From 19000fab15ab0b30c95a1bf6e034aa3c6bdc36cb Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Mon, 16 Dec 2024 13:15:28 +0100 Subject: Fix out-of-bounds read in `apt show :` We tried to access str.size() - 1 on a 0-sized string, which does not work, and now that we build with assertions triggers it. Closes: #1090068 --- apt-pkg/cacheset.cc | 3 +++ test/integration/test-apt-cli-show | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/apt-pkg/cacheset.cc b/apt-pkg/cacheset.cc index bfc85ef49..230e3d68f 100644 --- a/apt-pkg/cacheset.cc +++ b/apt-pkg/cacheset.cc @@ -60,6 +60,9 @@ bool CacheSetHelper::PackageFromTask(PackageContainerInterface * const pci, pkgC pattern.erase(archfound); } + if (pattern.empty()) + return false; + if (pattern[pattern.length() -1] != '^') return false; pattern.erase(pattern.length()-1); diff --git a/test/integration/test-apt-cli-show b/test/integration/test-apt-cli-show index 05a801f6a..010775d9b 100755 --- a/test/integration/test-apt-cli-show +++ b/test/integration/test-apt-cli-show @@ -28,6 +28,10 @@ setupaptarchive APTARCHIVE=$(readlink -f ./aptarchive) +testfailureequal "N: Unable to locate package : +N: Unable to locate package : +E: No packages found" apt show : + # note that we do not display Description-md5 with the "apt" cmd # and also show some additional fields that are calculated testsuccessequal "Package: foo -- cgit v1.2.3-70-g09d2