Thread
Menü

Fehler


24.06.2021 13:15 - Gestartet von helmut-wk
Das Prozent-Zeichen mit nachfolgendem Buchstaben werde in einigen Programmiersprachen als Format-String genutzt. Dieser werde an eine WiFi-Komponente weitergegeben. Das löse einen Buffer Overflow aus

ich bin mir nicht sicher, ob "Buffer overflow" der korrekte Ausdruck ist.

In C und verwandten Sprachen zeigt das Formastzeichen % an, dass in die Zeichenkette, in der es steht, etwas eingefügt werden muss, abhängig vom folgenden Zeichen. Ein %% wird durch % ersetzt, ein %n durch eine Zahl, ein %s durch eine Zeichenkette, ... und Zahlen Zeichenketten etc. müssen als Parameter auf dem Stck liegen, werden dort also gesucht, scheinbar gefunden, in die Zeichenkette eingebaut und vom Stack geräumt. Damit werden Werte vom Stack gehört, die eigentlich für etwas anderes da sind und dort bleiben müssten, das wäre ein Stack underflow.

Aber natürlich können die 4 in die SSID eingefügten Zeichenketten, die die 4 "%s"-e ersetzen, die SSID länger machen als vorgesehen, und zu einem Buffer overflow führen, das kommt also ggf. noch zusätzlich dazu.

Wenn das die richtige Erklärung ist, dann ist das System anschließend wohl hoffnungslos "abgestürzt". Wobei bei nem Multitasking-System dann oft nur der jeweilige Thread (hier also: WLAN-Verwaltung) hinüber ist und Rest (hoffentlich) noch normal funktioniert.

Abhilfe wäre (a) entweder für die Verarbeitung der SSID eine Funktion verwenden, die Formatangaben ignoriert, also die Zeichenkette so nimmt wie sie ist oder (b) vor der eigentlichen Verarbeitung die eingegeben SSID auf % scannen und die dann jeweils verdoppel, so dass nach der Formatverarbeitung wieder der ursprüngliche Name dasteht.