From fa79a7bf0df3ba998c9b82d8144b27c270e9462c Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Thu, 8 Oct 2020 14:16:23 +0200 Subject: Add error handling for versions in expressions Versions are not supported in arithmetic operations. (cherry picked from commit 85765a79b7434f37486827c189d71cd9169db680) --- rpmio/expression.c | 6 ++++++ tests/rpmmacro.at | 6 ++++++ 2 files changed, 12 insertions(+) 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 -- cgit v1.2.1