diff options
| author | Laytan Laats <laytanlaats@hotmail.com> | 2024-04-15 19:03:54 +0200 |
|---|---|---|
| committer | Laytan Laats <laytanlaats@hotmail.com> | 2024-04-15 19:03:54 +0200 |
| commit | 96ad8de7aefc444933d2fe61eab4a25256c72a6a (patch) | |
| tree | d3f100212207d3494a7ef227a4296e08e959816a /src/server | |
| parent | b042f1fd7648a2fb3b8f0880c8122b737a7a869f (diff) | |
fix use after free in fake methods
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/requests.odin | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/server/requests.odin b/src/server/requests.odin index 711fb79..fe99dc6 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 + } } } } |