mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-18 02:40:19 +00:00
hostapd: clone prototypes of ucode bss/interface objects
Fixes an issue where lookup would return different objects than the ones intended Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
9feed15a0f
commit
6cb8bb1675
@ -179,6 +179,20 @@ uc_value_t *wpa_ucode_global_init(const char *name, uc_resource_type_t *global_t
|
|||||||
return global;
|
return global;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uc_value_t *wpa_ucode_prototype_clone(uc_value_t *uval)
|
||||||
|
{
|
||||||
|
uc_value_t *proto, *proto_new;
|
||||||
|
|
||||||
|
proto = ucv_prototype_get(uval);
|
||||||
|
proto_new = ucv_object_new(&vm);
|
||||||
|
|
||||||
|
ucv_object_foreach(proto, key, val)
|
||||||
|
ucv_object_add(proto_new, key, ucv_get(val));
|
||||||
|
ucv_prototype_set(uval, ucv_get(proto));
|
||||||
|
|
||||||
|
return proto;
|
||||||
|
}
|
||||||
|
|
||||||
void wpa_ucode_registry_add(uc_value_t *reg, uc_value_t *val, int *idx)
|
void wpa_ucode_registry_add(uc_value_t *reg, uc_value_t *val, int *idx)
|
||||||
{
|
{
|
||||||
uc_value_t *data;
|
uc_value_t *data;
|
||||||
@ -190,7 +204,7 @@ void wpa_ucode_registry_add(uc_value_t *reg, uc_value_t *val, int *idx)
|
|||||||
ucv_array_set(reg, i, ucv_get(val));
|
ucv_array_set(reg, i, ucv_get(val));
|
||||||
|
|
||||||
data = ucv_object_new(&vm);
|
data = ucv_object_new(&vm);
|
||||||
ucv_object_add(ucv_prototype_get(val), "data", ucv_get(data));
|
ucv_object_add(wpa_ucode_prototype_clone(val), "data", ucv_get(data));
|
||||||
|
|
||||||
*idx = i + 1;
|
*idx = i + 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user