AlphaWallet / Web3E

Web3E Ethereum for Embedded devices running Arduino framework
MIT License
142 stars 45 forks source link

Segfault in getString #21

Open Bluegales opened 1 year ago

Bluegales commented 1 year ago

Trying to parse for example the following result results in a buffer underflow of lengthIndex.

{"jsonrpc":"2.0","id":0,"result":"0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005468747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f6c6f72626b652f426c6f636b426f6172642f6d61696e2f6173736574732f64656661756c745f68617264776172652e676966000000000000000000000000"}
    while (lengthIndex > 0)
    {
        Serial.println(index);
        asciiHex += v->at(index++);
        lengthIndex -= 32;
    }

checking if lengthIndex is smaller than 32 before subtracting or changing lengthIndex to a signed int fixes the segfault

JamesSmartCell commented 1 year ago

Thanks @Bluegales I'll take a look