libi3: Add basic validation to hex color conversion

Make sure a given hex color is the expected length and begins with a hash in
draw_util_hex_to_color() to avoid memory errors.

fixes #2829
This commit is contained in:
Tony Crisci 2017-07-12 17:50:19 -04:00
parent 1c06f8b797
commit 3a914396df
1 changed files with 5 additions and 0 deletions

View File

@ -84,6 +84,11 @@ void draw_util_surface_set_size(surface_t *surface, int width, int height) {
* *
*/ */
color_t draw_util_hex_to_color(const char *color) { color_t draw_util_hex_to_color(const char *color) {
if (strlen(color) < 6 || color[0] != '#') {
ELOG("Could not parse color: %s\n", color);
return draw_util_hex_to_color("#A9A9A9");
}
char alpha[2]; char alpha[2];
if (strlen(color) == strlen("#rrggbbaa")) { if (strlen(color) == strlen("#rrggbbaa")) {
alpha[0] = color[7]; alpha[0] = color[7];