fw4: gracefully handle `null` return values from `fd.read("line")`
authorJo-Philipp Wich <jo@mein.io>
Tue, 18 Oct 2022 07:20:56 +0000 (09:20 +0200)
committerJo-Philipp Wich <jo@mein.io>
Tue, 18 Oct 2022 07:20:56 +0000 (09:20 +0200)
Since ucode commit 4ae7072 "fs: use `getline()` for line wise read operations"
a call to `fs.read("line")` will yield `null` instead of an empty string when
encountering EOF, leading to an infinite loop when parsing loadfile entries.

Solve this issue by checking both for `null` and empty string return values.

Ref: https://forum.openwrt.org/t/x/139951/12
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
root/usr/share/ucode/fw4.uc

index 2a1e397c2e84c9437319232760c528c36dd3e148..47e86cd7dd2a0f87caeccde51710330199905fd3 100644 (file)
@@ -1785,9 +1785,9 @@ return {
                        return;
                }
 
-               let line = null, count = 0;
+               let count = 0;
 
-               while ((line = fd.read("line")) !== "") {
+               for (let line = fd.read("line"); length(line); line = fd.read("line")) {
                        line = trim(line);
 
                        if (length(line) == 0 || ord(line) == 35)