lib/gterm, lib/image: Reject zero font scale and zero-dimension images
diff --git a/common/lib/gterm.c b/common/lib/gterm.c
index dd0248ea..8ea298da 100644
--- a/common/lib/gterm.c
+++ b/common/lib/gterm.c
@@ -680,7 +680,8 @@ config_no_load_font:;
char *menu_font_scale = config_get_value(config, 0, "TERM_FONT_SCALE");
if (menu_font_scale != NULL) {
parse_resolution(&cfg->font_scale_x, &cfg->font_scale_y, NULL, menu_font_scale);
- if (cfg->font_scale_x > 8 || cfg->font_scale_y > 8) {
+ if (cfg->font_scale_x == 0 || cfg->font_scale_y == 0
+ || cfg->font_scale_x > 8 || cfg->font_scale_y > 8) {
cfg->font_scale_x = 1;
cfg->font_scale_y = 1;
} else {
diff --git a/common/lib/image.c b/common/lib/image.c
index ab9c33a1..e0836b92 100644
--- a/common/lib/image.c
+++ b/common/lib/image.c
@@ -37,7 +37,11 @@ struct image *image_open(struct file_handle *file) {
pmm_free(src, file->size);
- if (image->img == NULL) {
+ if (image->img == NULL || x == 0 || y == 0) {
+ if (image->img != NULL) {
+ // stbi allocated but dimensions are degenerate
+ pmm_free(image->img, (size_t)x * (size_t)y * 4);
+ }
pmm_free(image, sizeof(struct image));
return NULL;
}
