about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2025-01-31 23:39:46 +0100
committerbptato <nincsnevem662@gmail.com>2025-01-31 23:43:16 +0100
commit597d63922c5614da4f07bbddd4a5866c48cad555 (patch)
tree43ce7175c324edde930e5a1bb5f809df6589a2b4 /src
parentca9e427bce33ebdc006787d4e92333b269b92753 (diff)
downloadchawan-597d63922c5614da4f07bbddd4a5866c48cad555.tar.gz
loader: do not crash on invalid shareCachedItem
It could be legitimate.

(Although I found it in a case where it likely isn't legitimate.
But that's another question...)
Diffstat (limited to 'src')
-rw-r--r--src/server/loader.nim7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/server/loader.nim b/src/server/loader.nim
index e20020e8..31bd2d50 100644
--- a/src/server/loader.nim
+++ b/src/server/loader.nim
@@ -1455,9 +1455,10 @@ proc shareCachedItem(ctx: LoaderContext; stream: SocketStream;
   let sourceClient = ctx.clientMap[sourcePid]
   let targetClient = ctx.clientMap[targetPid]
   let n = sourceClient.cacheMap.find(id)
-  let item = sourceClient.cacheMap[n]
-  inc item.refc
-  targetClient.cacheMap.add(item)
+  if n != -1:
+    let item = sourceClient.cacheMap[n]
+    inc item.refc
+    targetClient.cacheMap.add(item)
 
 proc openCachedItem(ctx: LoaderContext; stream: SocketStream;
     client: ClientHandle; r: var BufferedReader) =