[PATCH] hostapd_acl_recv_radius: tagged is a pointer, not an int
j at w1.fi
Sat Nov 19 12:45:12 PST 2016
On Fri, Nov 04, 2016 at 05:06:40PM -0700, Derrick Pallas wrote:
> Discovered & fixed by Louisa Chong, `tagged` is an `int*`, not an `int`, so
> we actually want to take the address of `cache->vlan_id.tagged` here.
cache->vlan_id.tagged is an array (int tagged), the current code
gets its address; not the cache->vlan_id.tagged value or any other
int for that matter.
> diff --git a/src/ap/ieee802_11_auth.c b/src/ap/ieee802_11_auth.c
> @@ -569,7 +569,7 @@ hostapd_acl_recv_radius(struct radius_msg *msg, struct radius_msg *req,
> - tagged = cache->vlan_id.tagged;
> + tagged = &cache->vlan_id.tagged;
This would break the build with -Werror:
../src/ap/ieee802_11_auth.c: In function ‘hostapd_acl_recv_radius’:
../src/ap/ieee802_11_auth.c:572:10: error: assignment from incompatible pointer type [-Werror]
tagged = &cache->vlan_id.tagged;
The current cache->vlan_id.tagged here is already getting the correct
pointer to the first entry in the array, i.e., it has the same value as
&cache->vlan_id.tagged. While getting the address of the array with &
would have the same address value, it would have different type and
that's not what we want here.
Jouni Malinen PGP id EFC895FA
More information about the Hostap