Просмотр исходного кода

hostapd: fix `UPDATE_VAL` fail in `uc_hostapd_iface_start`

If the `intval` obtained from `info` is indeed 0, it cannot be set to `conf`.

Signed-off-by: Jianhui Zhao <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/15495
Signed-off-by: Hauke Mehrtens <[email protected]>
Jianhui Zhao 1 год назад
Родитель
Сommit
b4dfa3b33c
1 измененных файлов с 6 добавлено и 4 удалено
  1. 6 4
      package/network/services/hostapd/src/src/ap/ucode.c

+ 6 - 4
package/network/services/hostapd/src/src/ap/ucode.c

@@ -533,10 +533,12 @@ uc_hostapd_iface_start(uc_vm_t *vm, size_t nargs)
 		return NULL;
 
 #define UPDATE_VAL(field, name)							\
-	if ((intval = ucv_int64_get(ucv_object_get(info, name, NULL))) &&	\
-		!errno && intval != conf->field) do {				\
-		conf->field = intval;						\
-		changed = true;							\
+	do {									\
+		intval = ucv_int64_get(ucv_object_get(info, name, NULL));	\
+		if (!errno && intval != conf->field) {				\
+			conf->field = intval;					\
+			changed = true;						\
+		}								\
 	} while(0)
 
 	conf = iface->conf;