cli: Validate hex color length

This commit is contained in:
jld3103 2022-03-29 21:47:51 +02:00
parent 8619d77445
commit 139a9c4010

15
cli.cpp
View file

@ -270,14 +270,17 @@ bool ParseColors(std::string colors_string, DeviceOptions *options)
/* swy: (B) no luck, try interpreting it as an hexadecimal number instead */ /* swy: (B) no luck, try interpreting it as an hexadecimal number instead */
if (!parsed) if (!parsed)
{ {
const char *colorptr = color.c_str(); char *endptr = NULL; if (color.length() == 6)
{
const char *colorptr = color.c_str(); char *endptr = NULL;
rgb = strtoul(colorptr, &endptr, 16); rgb = strtoul(colorptr, &endptr, 16);
/* swy: check that strtoul() has advanced the read pointer until the end (NULL terminator); /* swy: check that strtoul() has advanced the read pointer until the end (NULL terminator);
that means it has read the whole thing */ that means it has read the whole thing */
if (colorptr != endptr && endptr && *endptr == '\0') if (colorptr != endptr && endptr && *endptr == '\0')
parsed = true; parsed = true;
}
} }
/* swy: we got it, save the 32-bit integer as a tuple of three RGB bytes */ /* swy: we got it, save the 32-bit integer as a tuple of three RGB bytes */