2
0
mirror of https://gitlab.com/apparmor/apparmor synced 2025-08-22 18:17:09 +00:00

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; size_t i;
bool flag = true; bool flag = true;
for (i = 0; i < 16; i++) { for (i = 0; i < 16; i++) {
if ((val[i] & 0xF0) >> 4 != 0) if (flag && (val[i] & 0xF0) >> 4 != 0)
flag = false; flag = false;
if (!flag) if (!flag)
data.push_back((val[i] & 0xF0) >> 4); data.push_back((val[i] & 0xF0) >> 4);
if ((val[i] & 0x0F) != 0) if (flag && (val[i] & 0x0F) != 0)
flag = false; flag = false;
if (!flag) if (!flag)
data.push_back(val[i] & 0x0F); 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) { for (auto &i: regex_range) {
bignum sstart = i.first; bignum sstart = i.first;
bignum send = i.second; 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--) { for (j = sstart.size() - 1; j >= 0; j--) {
result << std::nouppercase; result << std::nouppercase;
if (sstart[j] == send[j]) { if (sstart[j] == send[j]) {