Browse Source

fw4: gracefully handle `null` return values from `fd.read("line")`

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>
Jo-Philipp Wich 1 year ago
parent
commit
7ae5e14bbd
1 changed files with 2 additions and 2 deletions
  1. 2 2
      root/usr/share/ucode/fw4.uc

+ 2 - 2
root/usr/share/ucode/fw4.uc

@@ -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)