From 96ad8de7aefc444933d2fe61eab4a25256c72a6a Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Mon, 15 Apr 2024 19:03:54 +0200 Subject: [PATCH] fix use after free in fake methods --- src/server/requests.odin | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/server/requests.odin b/src/server/requests.odin index 711fb791..fe99dc68 100644 --- a/src/server/requests.odin +++ b/src/server/requests.odin @@ -1179,7 +1179,17 @@ notification_did_save :: proc( for k2, v2 in &v.symbols { if corrected_uri.uri == v2.uri { free_symbol(v2, indexer.index.collection.allocator) - v.symbols[k2] = {} + delete_key(&v.symbols, k2) + } + } + + for method, &symbols in v.methods { + for i := 0; i < len(symbols); i += 1 { + #no_bounds_check symbol := symbols[i] + if corrected_uri.uri == symbol.uri { + unordered_remove(&symbols, i) + i -= 1 + } } } }