[v2,15/18] initscripts fkt: readhash should only parse lines with a =

Message ID 20240616160245.18865-16-jonatan.schlag@ipfire.org
State New
Headers
Series [v2,01/18] tests: Add bash lib |

Commit Message

Jonatan Schlag June 16, 2024, 4:02 p.m. UTC
  A line without a = is clearly invalid.

Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
---
 src/initscripts/system/functions                            | 6 ++++++
 tests/src/initscripts/system/functions/data/2               | 1 +
 tests/src/initscripts/system/functions/data/2_output_stderr | 1 +
 3 files changed, 8 insertions(+)
  

Patch

diff --git a/src/initscripts/system/functions b/src/initscripts/system/functions
index ce9d2a5ad..c9c4c0675 100644
--- a/src/initscripts/system/functions
+++ b/src/initscripts/system/functions
@@ -911,6 +911,12 @@  readhash() {
 			continue
 		fi
 
+		# Skip lines without a =
+		if ! [[ ${line} =~ [^=]*=[^=]*$ ]]; then
+			echo "Invalid line '${line}'" >&2
+			continue
+		fi
+
 		local key="${line%=*}"
 		local val="${line#*=}"
 
diff --git a/tests/src/initscripts/system/functions/data/2 b/tests/src/initscripts/system/functions/data/2
index 3060ad880..760294c30 100644
--- a/tests/src/initscripts/system/functions/data/2
+++ b/tests/src/initscripts/system/functions/data/2
@@ -15,6 +15,7 @@  RED_ADDRESS=0.0.0.0
 RED_NETMASK=0.0.0.0
 RED_TYPE=PPPOE
 RED_NETADDRESS=0.0.0.0
+Line_without_a_equal_sign_is_also_invalid
 
 # Comment for testing  
     # Comment for testing Comments with spaces before
diff --git a/tests/src/initscripts/system/functions/data/2_output_stderr b/tests/src/initscripts/system/functions/data/2_output_stderr
index f29e94b19..82f035e26 100644
--- a/tests/src/initscripts/system/functions/data/2_output_stderr
+++ b/tests/src/initscripts/system/functions/data/2_output_stderr
@@ -6,3 +6,4 @@  Invalid key '-RED_DEV'
 Invalid key 'RE??D_MACADDR'
 Invalid key 'RED&&_DRIVER'
 Invalid key '0BLUE_DEV'
+Invalid line 'Line_without_a_equal_sign_is_also_invalid'