From d3cb6b400155c9fb3001843331029b0f46565481 Mon Sep 17 00:00:00 2001 From: Nunuhara Cabbage Date: Sun, 28 Sep 2025 18:52:05 -0700 Subject: [PATCH] Fix segfault in dd1_save_walk_data Fix null pointer dereference when input array is not allocated and walk data isn't found. --- src/dungeon/dungeon.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dungeon/dungeon.c b/src/dungeon/dungeon.c index d6960e9..e666248 100644 --- a/src/dungeon/dungeon.c +++ b/src/dungeon/dungeon.c @@ -633,10 +633,10 @@ static bool dd1_save_walk_data(struct dungeon_context *ctx, int map, struct page int offset = dd1_find_walk_data(array, map, ctx->dgn); if (offset == WALK_DATA_NOT_FOUND) { - offset = array->nr_vars; - array->values[1].i += 1; - union vm_value dim = { .i = array->nr_vars + 4 + nr_cells }; + offset = array ? array->nr_vars : 0; + union vm_value dim = { .i = offset + 4 + nr_cells }; *page = array = realloc_array(array, 1, &dim, AIN_ARRAY_INT, 0, false); + array->values[1].i += 1; } else if (offset == WALK_DATA_BROKEN) { if (array) WARNING("Discarding broken walk data");