diff options
author | Julian Andres Klode <julian.klode@canonical.com> | 2019-12-06 13:46:58 +0100 |
---|---|---|
committer | Julian Andres Klode <julian.klode@canonical.com> | 2019-12-06 13:48:07 +0100 |
commit | 05d1549fb65b00137b22159761462626d11bfe73 (patch) | |
tree | 625ed234b54c2382ca5b8759fe3b77fb0341ac10 | |
parent | 9ef43fe6000122490fa2f74e49575513e0059b31 (diff) |
satisfy: Fix segmentation fault when called with empty argument
apt satisfy "" caused a segmentation fault because we were iterating
over the characters, checking if the next character was the end of
the string; when it could also be the current character.
Instead, check whether the next character is before the end of
the string, rather than identical to the end.
-rw-r--r-- | apt-private/private-source.cc | 2 | ||||
-rwxr-xr-x | test/integration/test-apt-get-satisfy | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/apt-private/private-source.cc b/apt-private/private-source.cc index 3964ca48e..9b47ce31f 100644 --- a/apt-private/private-source.cc +++ b/apt-private/private-source.cc @@ -693,7 +693,7 @@ bool DoBuildDep(CommandLine &CmdL) // Reject '>' and '<' as operators, as they have strange meanings. bool insideVersionRestriction = false; - for (auto C = Start; C + 1 != Stop; C++) + for (auto C = Start; C + 1 < Stop; C++) { if (*C == '(') insideVersionRestriction = true; diff --git a/test/integration/test-apt-get-satisfy b/test/integration/test-apt-get-satisfy index f2e04d789..23daf069a 100755 --- a/test/integration/test-apt-get-satisfy +++ b/test/integration/test-apt-get-satisfy @@ -70,3 +70,7 @@ testfailureequal "E: Invalid operator '>' at offset 5, did you mean '>>' or '>=' msgmsg "Unsupported dependency type" testfailureequal "E: Problem parsing dependency: Recommends: foo" aptget satisfy 'Recommends: foo' -s + + +msgmsg "Empty dependency" +testfailureequal "E: Problem parsing dependency: " aptget satisfy '' -s |