diff options
author | Michael Schroeder <mls@suse.de> | 2020-10-08 14:16:23 +0200 |
---|---|---|
committer | Panu Matilainen <pmatilai@redhat.com> | 2020-12-10 13:28:07 +0200 |
commit | fa79a7bf0df3ba998c9b82d8144b27c270e9462c (patch) | |
tree | 0ce1be0ad4a9a1bda7f27f2f8dfae32535f52707 | |
parent | f18dd8029c56548b1839a97bbaff3da911e15c28 (diff) | |
download | rpm-fa79a7bf0df3ba998c9b82d8144b27c270e9462c.tar.gz |
Add error handling for versions in expressions
Versions are not supported in arithmetic operations.
(cherry picked from commit 85765a79b7434f37486827c189d71cd9169db680)
-rw-r--r-- | rpmio/expression.c | 6 | ||||
-rw-r--r-- | tests/rpmmacro.at | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/rpmio/expression.c b/rpmio/expression.c index f8210a456..ccd0e26f7 100644 --- a/rpmio/expression.c +++ b/rpmio/expression.c @@ -608,6 +608,9 @@ static Value doMultiplyDivide(ParseState state) valueSetInteger(v1, i1 * i2); else valueSetInteger(v1, i1 / i2); + } else if (valueIsVersion(v1)) { + exprErr(state, _("* and / not supported for versions"), p); + goto err; } else { exprErr(state, _("* and / not supported for strings"), p); goto err; @@ -661,6 +664,9 @@ static Value doAddSubtract(ParseState state) valueSetInteger(v1, i1 + i2); else valueSetInteger(v1, i1 - i2); + } else if (valueIsVersion(v1)) { + exprErr(state, _("+ and - not supported for versions"), p); + goto err; } else { char *copy; diff --git a/tests/rpmmacro.at b/tests/rpmmacro.at index 7ceefb51d..80d7ee207 100644 --- a/tests/rpmmacro.at +++ b/tests/rpmmacro.at @@ -470,6 +470,8 @@ AT_CHECK([[ runroot rpm --define "aaa hello" --eval '%[%aaa]' runroot rpm --eval '%[%{foo]' runroot rpm --eval '%[v""]' +runroot rpm --eval '%[v"1" + v"2"]' +runroot rpm --eval '%[v"1" / v"2"]' ]], [1], [], @@ -479,6 +481,10 @@ error: expanded string: hello error: Unterminated {: {foo error: invalid version: v"" error: ^ +error: + and - not supported for versions: v"1" + v"2" +error: ^ +error: * and / not supported for versions: v"1" / v"2" +error: ^ ]) AT_CLEANUP |