From 5788c408b7e8afe35926cf62daefa3d45777a67c Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 27 May 2026 09:57:05 +0000 Subject: fix: Reject out-of-range digits and surface data directory errors --- src/cache.gleam | 7 ++++++- src/mayu.gleam | 11 ++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cache.gleam b/src/cache.gleam index f3baade..17fc168 100644 --- a/src/cache.gleam +++ b/src/cache.gleam @@ -55,7 +55,12 @@ fn load_theme(theme) -> Dict(Int, CachedImage) { fn parse_digit_filename(file) { case string.split(file, ".") { - [digit, _extension] -> int.parse(digit) + [digit, _extension] -> + case int.parse(digit) { + Ok(parsed_digit) if parsed_digit >= 0 && parsed_digit <= 9 -> + Ok(parsed_digit) + _ -> Error(Nil) + } _ -> Error(Nil) } } diff --git a/src/mayu.gleam b/src/mayu.gleam index 0d9fcf9..edb912d 100644 --- a/src/mayu.gleam +++ b/src/mayu.gleam @@ -12,7 +12,16 @@ import wisp pub fn main() { wisp.configure_logger() - let _ = simplifile.create_directory("./data") + case simplifile.create_directory("./data") { + Ok(_) | Error(simplifile.Eexist) -> Nil + Error(error) -> { + wisp.log_error( + "Failed to create ./data directory: " + <> simplifile.describe_error(error), + ) + panic as "cannot create data directory" + } + } let image_cache = cache.load_themes() let version_tag = case envoy.get("MAYU_VERSION") { Ok(version) -> "(v" <> version <> ")" -- cgit v1.2.3