diff --git a/src/initscripts/system/functions b/src/initscripts/system/functions
index 094e35495..e486cc085 100644
--- a/src/initscripts/system/functions
+++ b/src/initscripts/system/functions
@@ -909,21 +909,15 @@ readhash() {
 			continue
 		fi
 
-		# Skip lines without a =
-		if ! [[ ${line} =~ [^=]*=[^=]*$ ]]; then
+		# Check for a valid key followed by =
+		if ! [[ ${line} =~ ^[A-Za-z_][A-Za-z0-9_]*= ]]; then
 			echo "Invalid line '${line}'" >&2
 			continue
 		fi
 
-		local key="${line%=*}"
+		local key="${line%%=*}"
 		local val="${line#*=}"
 
-		# Skip lines with an invalid key
-		if ! [[ ${key} =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]]; then
-			echo "Invalid key '${key}'" >&2
-			continue
-		fi
-
 		# Skip lines with invalid values
 		if ! [[ ${val} =~ ^[\'][\ A-Za-z0-9=/,.:%_@#+-]*[\']$ ]] && ! [[ ${val} =~ ^[A-Za-z0-9=/,.:%_@#+-]*$ ]]; then
 			echo "Invalid value '${val}' for key '${key}'" >&2
diff --git a/tests/src/initscripts/system/functions/data/2_output_stderr b/tests/src/initscripts/system/functions/data/2_output_stderr
index 82f035e26..7f4c5a944 100644
--- a/tests/src/initscripts/system/functions/data/2_output_stderr
+++ b/tests/src/initscripts/system/functions/data/2_output_stderr
@@ -2,8 +2,8 @@ Invalid value '?3' for key 'CONFIG_TYPE'
 Invalid value 'gree!n0' for key 'GREEN_DEV'
 Invalid value '00:c0:08:8a  :a0:47' for key 'GREEN_MACADDR'
 Invalid value '"r8175"' for key 'GREEN_DRIVER'
-Invalid key '-RED_DEV'
-Invalid key 'RE??D_MACADDR'
-Invalid key 'RED&&_DRIVER'
-Invalid key '0BLUE_DEV'
+Invalid line '-RED_DEV=red0'
+Invalid line 'RE??D_MACADDR=00:c0:08:8a:a0:56'
+Invalid line 'RED&&_DRIVER=r8283'
+Invalid line '0BLUE_DEV='blue0 net0''
 Invalid line 'Line_without_a_equal_sign_is_also_invalid'
