Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 841ce8b7 authored by Kenny Root's avatar Kenny Root
Browse files

Fix bitmask in aapt's StringPool length construction

The StringPool indicates the length of a string with a 16-bit
integer. If the length of the string is greater than 0x7FFF,
it splits it into two 16-bit integers with the first one
having the high bit set.

The length calculation has a small bug that masks off the
19 bits instead of the first 15 bits as intended.
parent 83bad3df
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -228,7 +228,7 @@ status_t StringPool::writeStringBlock(const sp<AaptFile>& pool)
        }
        dat += (preSize+strPos)/sizeof(uint16_t);
        if (lenSize > sizeof(uint16_t)) {
            *dat = htods(0x8000 | ((strSize>>16)&0x7ffff));
            *dat = htods(0x8000 | ((strSize>>16)&0x7fff));
            dat++;
        }
        *dat++ = htods(strSize);