Check for rogue minus sign when parsing unsigned numbers

This commit is contained in:
Georgii Surkov 2024-07-15 17:04:37 +01:00
parent ffa3996a5e
commit b7f1995948
No known key found for this signature in database
GPG key ID: 44A24455F6ADB5E7

View file

@ -400,7 +400,11 @@ bool flipper_format_stream_read_value_line(
}; break; }; break;
case FlipperStreamValueUint32: { case FlipperStreamValueUint32: {
uint32_t* data = _data; uint32_t* data = _data;
scan_values = sscanf(furi_string_get_cstr(value), "%" PRIu32, &data[i]); // Minus sign is allowed in scanf() for unsigned numbers, resulting in unintentionally huge values with no error reported
if(!furi_string_start_with(value, "-")) {
scan_values =
sscanf(furi_string_get_cstr(value), "%" PRIu32, &data[i]);
}
}; break; }; break;
case FlipperStreamValueHexUint64: { case FlipperStreamValueHexUint64: {
uint64_t* data = _data; uint64_t* data = _data;