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 <freif...@adrianschmutzler.de>
---
 .../ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom   | 4 ++--
 .../lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom  | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git 
a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom 
b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index f07dbf83c4..da3e3bea77 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -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
diff --git 
a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom 
b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom
index 82f6885221..6f133c82a7 100644
--- a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom
+++ b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom
@@ -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
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to