Re: [PATCH] P2P: Handle possible long P2P Device interface name

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 03, 2019 at 06:17:11PM +0300, Andrei Otcheretianski wrote:
> The way that the P2P Device interface name was constructed, might
> result with an interface name that exceeds the maximal allowed
> interface name length (IFNAMSZ).
> 
> Fix this by properly limiting the created interface name length.

How is this supposed to work and guarantee that the truncated interface
name would be unique?

> diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
> @@ -3794,14 +3794,21 @@ int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s,
>  {
>  	struct wpa_interface iface;
>  	struct wpa_supplicant *p2pdev_wpa_s;
> -	char ifname[100];
> -	char force_name[100];
> +	char ifname[IFNAMSIZ];
> +	char force_name[IFNAMSIZ];

IFNAMSIZ as the array length would mean that the array can hold only
IFNAMSIZ-1 character long name, so this would be truncating to shorter
than IFNAMSIZ characters..

>  	ret = os_snprintf(ifname, sizeof(ifname), P2P_MGMT_DEVICE_PREFIX "%s",
>  			  wpa_s->ifname);
> -	if (os_snprintf_error(sizeof(ifname), ret))
> +
> +	if (ret >= IFNAMSIZ) {
> +		wpa_printf(MSG_WARNING,
> +			   "P2P: P2P Device interface name truncated=%s",
> +			   ifname);
> +	} else if (ret < 0) {
>  		return -1;
> +	}

So what if snprintf return IFNAMSIZ? Wouldn't that leave ifname[]
without nul termination here? And that could result in reading beyond
the end of the buffer when using this string, e.g., in that wpa_printf()
print.
 
-- 
Jouni Malinen                                            PGP id EFC895FA

_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux