mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 09:16:01 +08:00
fix use after free
the string created by value.substr(index * 2, 2) is deleted after c_str() but before strtoul executes. The solution is to use a temporary string to store the value.
This commit is contained in:
parent
f77459983f
commit
67aa830511
@ -21,8 +21,9 @@ namespace spine {
|
||||
static float toColor (const string &value, int index) {
|
||||
if (value.size() != 8) throw runtime_error("Error parsing color, length must be 8: " + value);
|
||||
char *p;
|
||||
int color = strtoul(value.substr(index * 2, 2).c_str(), &p, 16);
|
||||
if (*p != 0) throw runtime_error("Error parsing color: " + value + ", invalid hex value: " + value.substr(index * 2, 2));
|
||||
string tmp = value.substr(index * 2, 2);
|
||||
int color = strtoul(tmp.c_str(), &p, 16);
|
||||
if (*p != 0) throw runtime_error("Error parsing color: " + value + ", invalid hex value: " + tmp);
|
||||
return color / (float)255;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user