treewide: fix hex2dec conversion for MAC address checksum offset
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>
Wed, 18 Sep 2019 11:56:13 +0000 (13:56 +0200)
committerChristian Lamparter <chunkeey@gmail.com>
Sat, 28 Sep 2019 22:46:13 +0000 (00:46 +0200)
If chksum_offset is converted by $(($...)) at the beginning, the
check [ -n "$chksum_offset" ] will always return true, as the
conversion yields "0" for an empty argument, and [ -n "0" ] is
true.

With this patch, the variable is not converted before the check,
but only when it's used in dd.

No conversion is done for use in hexdump, as this can deal with
hex value offsets.

Fixes: b133e466b08e ("treewide: convert WiFi caldata size and offset to hexadecimal")
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom

index 25d82a5f0d786c97adee6a195141ec94393dd275..7911d0aa1eadfcd69d31ea21f6c0da7591079818 100644 (file)
@@ -60,7 +60,7 @@ xor() {
 ath9k_patch_fw_mac() {
        local mac=$1
        local mac_offset=$(($2))
-       local chksum_offset=$(($3))
+       local chksum_offset=$3
        local xor_mac
        local xor_fw_mac
        local xor_fw_chksum
@@ -78,7 +78,7 @@ ath9k_patch_fw_mac() {
                xor_fw_chksum=$(xor $xor_fw_chksum $xor_fw_mac $xor_mac)
 
                printf "%b" "\x${xor_fw_chksum:0:2}\x${xor_fw_chksum:2:2}" | \
-                       dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$chksum_offset count=2
+                       dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$(($chksum_offset)) count=2
        }
 
        macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc oflag=seek_bytes bs=6 seek=$mac_offset count=1
index 82f688522122958b73571c936d5c4a24ea978bad..6f133c82a7b0346b230bee7f0e37d5c4422b455f 100644 (file)
@@ -103,7 +103,7 @@ ath9k_patch_fw_mac_crc() {
 ath9k_patch_fw_mac() {
        local mac=$1
        local mac_offset=$(($2))
-       local chksum_offset=$(($3))
+       local chksum_offset=$3
        local xor_mac
        local xor_fw_mac
        local xor_fw_chksum
@@ -121,7 +121,7 @@ ath9k_patch_fw_mac() {
                xor_fw_chksum=$(xor $xor_fw_chksum $xor_fw_mac $xor_mac)
 
                printf "%b" "\x${xor_fw_chksum:0:2}\x${xor_fw_chksum:2:2}" | \
-                       dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$chksum_offset count=2
+                       dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$(($chksum_offset)) count=2
        }
 
        macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$mac_offset count=6