From 75bc5725e4fc96edc052094e0e421fc2b6cfe127 Mon Sep 17 00:00:00 2001 From: Dicken Date: Sun, 26 Jul 2026 12:50:41 +0200 Subject: [PATCH] round56: Kritischer Bugfix - Geraete mit 0 von masscan gefundenen Ports loesten faelschlich vollen 65535-Port-Fallback-Scan aus --- apps/backend/src/routes/scan.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/backend/src/routes/scan.ts b/apps/backend/src/routes/scan.ts index f1e7bbd..31bc410 100644 --- a/apps/backend/src/routes/scan.ts +++ b/apps/backend/src/routes/scan.ts @@ -391,7 +391,21 @@ export async function scanRoutes(app: FastifyInstance): Promise { return; } try { - const masscanPorts = masscanBatch?.get(device.ip); + // WICHTIG (Bugfix round56): masscanBatch.get(device.ip) liefert + // "undefined" in ZWEI völlig unterschiedlichen Fällen: (a) der + // gesamte masscan-Batch ist fehlgeschlagen (masscanBatch === + // null), ODER (b) der Batch war erfolgreich, aber DIESES + // Gerät hat schlicht KEINE offenen Ports - ein bei Handys/ + // Smart-Geräten völlig normales, gültiges Ergebnis. Der + // bisherige Code hat beide Fälle identisch behandelt und + // damit für JEDES Gerät mit null gefundenen Ports fälschlich + // einen kompletten, langsamen 65535-Port-TCP-Fallback-Scan + // ausgelöst - genau das, was masscan eigentlich vermeiden + // sollte. Ein leeres Array ist in JS truthy (nur undefined/ + // null/0/""/NaN/false sind falsy), daher reicht es, hier statt + // "undefined" bewusst ein leeres Array zu liefern, wenn der + // Batch als Ganzes erfolgreich war. + const masscanPorts = masscanBatch ? masscanBatch.get(device.ip) ?? [] : undefined; const preFetched: PreFetchedScanData = { masscanAttempted: true, masscanPorts,