parser: track leading zeros required for ipv6 range regex generator

Signed-off-by: Georgia Garcia <georgia.garcia@canonical.com>
This commit is contained in:
Georgia Garcia 2023-08-23 10:49:53 -03:00 committed by John Johansen
parent fb5f59024c
commit 75ca0e7919
2 changed files with 6 additions and 3 deletions

View file

@ -59,11 +59,11 @@ public:
size_t i;
bool flag = true;
for (i = 0; i < 16; i++) {
if ((val[i] & 0xF0) >> 4 != 0)
if (flag && (val[i] & 0xF0) >> 4 != 0)
flag = false;
if (!flag)
data.push_back((val[i] & 0xF0) >> 4);
if ((val[i] & 0x0F) != 0)
if (flag && (val[i] & 0x0F) != 0)
flag = false;
if (!flag)
data.push_back(val[i] & 0x0F);

View file

@ -886,7 +886,10 @@ static std::string generate_regex_range(bignum start, bignum end)
for (auto &i: regex_range) {
bignum sstart = i.first;
bignum send = i.second;
if (sstart.base == 16) {
for (j = (size_t) sstart.size(); j < 32; j++)
result << '0';
}
for (j = sstart.size() - 1; j >= 0; j--) {
result << std::nouppercase;
if (sstart[j] == send[j]) {