mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
initscripts fkt: ignore invalid keys in readhash
Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
committed by
Michael Tremer
parent
d289bc28be
commit
02254f5543
@@ -913,6 +913,12 @@ readhash() {
|
||||
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
|
||||
|
||||
printf -v "${array}[${key}]" "%s" "${val}"
|
||||
done < "${file}"
|
||||
}
|
||||
|
||||
20
tests/src/initscripts/system/functions/data/2
Normal file
20
tests/src/initscripts/system/functions/data/2
Normal file
@@ -0,0 +1,20 @@
|
||||
CONFIG_TYPE=3
|
||||
GREEN_DEV=green0
|
||||
GREEN_MACADDR=00:c0:08:8a:a0:47
|
||||
GREEN_DRIVER=r8175
|
||||
-RED_DEV=red0
|
||||
RE??D_MACADDR=00:c0:08:8a:a0:56
|
||||
RED&&_DRIVER=r8283
|
||||
# Another Comment
|
||||
0BLUE_DEV='blue0 net0'
|
||||
BLUE_MACADDR=bc:30:7d:58:6b:e3
|
||||
BLUE_DRIVER=rt2800
|
||||
RED_DHCP_HOSTNAME=ipfire
|
||||
RED_DHCP_FORCE_MTU=
|
||||
RED_ADDRESS=0.0.0.0
|
||||
RED_NETMASK=0.0.0.0
|
||||
RED_TYPE=PPPOE
|
||||
RED_NETADDRESS=0.0.0.0
|
||||
|
||||
# Comment for testing
|
||||
# Comment for testing Comments with spaces before
|
||||
@@ -0,0 +1,4 @@
|
||||
Invalid key '-RED_DEV'
|
||||
Invalid key 'RE??D_MACADDR'
|
||||
Invalid key 'RED&&_DRIVER'
|
||||
Invalid key '0BLUE_DEV'
|
||||
@@ -23,3 +23,19 @@ test_that_array_doesnt_have_key "CONFIG" "# Comment for testing Comments with sp
|
||||
|
||||
test_that_output_is "${SCRIPT_PATH}/data/1_output_stdout" "1" readhash "CONFIG" "${SCRIPT_PATH}/data/1"
|
||||
test_that_output_is "${SCRIPT_PATH}/data/1_output_stderr" "2" readhash "CONFIG" "${SCRIPT_PATH}/data/1"
|
||||
|
||||
# Check with invalid Lines (values and keys)
|
||||
readhash "CONFIG2" "${SCRIPT_PATH}/data/2" &> /dev/null
|
||||
|
||||
# test if we read the correct data
|
||||
test_value_in_array "CONFIG2" "RED_DHCP_HOSTNAME" "ipfire"
|
||||
test_value_in_array "CONFIG2" "BLUE_MACADDR" "bc:30:7d:58:6b:e3"
|
||||
|
||||
# We could do some complex checking if we would create functions to check for correct values and keys.
|
||||
# We would be then able to mock these function and check if they are correctly called and if the data
|
||||
# does not end up in our array.
|
||||
# I think the more simpler way of checking the logged errors is the fastes way here.
|
||||
test_that_output_is "${SCRIPT_PATH}/data/2_output_stdout" "1" readhash "CONFIG2" "${SCRIPT_PATH}/data/2"
|
||||
test_that_output_is "${SCRIPT_PATH}/data/2_output_stderr" "2" readhash "CONFIG2" "${SCRIPT_PATH}/data/2"
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user