:: commit 7041ea96c0aeb7c3a59b61331e67c3573252ea55

Mintsuki <mintsuki@protonmail.com> — 2026-04-01 18:24

parents: af9fdbe7b0

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;
     }
tab: 248 wrap: offon