[PATCH] hostapd_acl_recv_radius: tagged is a pointer, not an int

Jouni Malinen 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[32]), the current code
gets its address; not the cache->vlan_id.tagged[0] 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[0]. 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 mailing list