Index | Thread | Search

From:
YASUOKA Masahiko <yasuoka@openbsd.org>
Subject:
Re: radiusd: replace inet_aton with inet_pton
To:
florian@openbsd.org
Cc:
tech@openbsd.org
Date:
Tue, 27 Aug 2024 12:20:39 +0900

Download raw body.

Thread
Hello,

On Wed, 21 Aug 2024 13:22:13 +0200
Florian Obser <florian@openbsd.org> wrote:
> Documentation says IP addresses are not truncated, so the parser can
> be stricter and only accept dotted IP addresses.
> 
> Same as npppd, I think this code actually comes from there, or the other
> way around.
> 
> Not a user of radiusd.
> 
> Tests, OKs?

tested roughly.
ok yasuoka

Thanks,

> diff --git radiusd_ipcp.c radiusd_ipcp.c
> index 27cd3c4bd13..91a519f81e1 100644
> --- radiusd_ipcp.c
> +++ radiusd_ipcp.c
> @@ -447,7 +447,7 @@ ipcp_config_set(void *ctx, const char *name, int argc, char * const * argv)
>  		SYNTAX_ASSERT(argc == 1 || argc == 2,
>  		    "specify 1 or 2 addresses for `name-server'");
>  		for (i = 0; i < argc; i++) {
> -			if (inet_aton(argv[i], &ina) != 1) {
> +			if (inet_pton(AF_INET, argv[i], &ina) != 1) {
>  				module_send_message(module->base, IMSG_NG,
>  				    "Invalid IP address: %s", argv[i]);
>  				return;
> @@ -464,7 +464,7 @@ ipcp_config_set(void *ctx, const char *name, int argc, char * const * argv)
>  		SYNTAX_ASSERT(argc == 1 || argc == 2,
>  		    "specify 1 or 2 addresses for `name-server'");
>  		for (i = 0; i < argc; i++) {
> -			if (inet_aton(argv[i], &ina) != 1) {
> +			if (inet_pton(AF_INET, argv[i], &ina) != 1) {
>  				module_send_message(module->base, IMSG_NG,
>  				    "Invalid IP address: %s", argv[i]);
>  				return;
> @@ -1735,22 +1735,22 @@ parse_address_range(const char *range)
>  		goto error;
>  	if ((sep = strchr(buf, '-')) != NULL) {
>  		*sep = '\0';
> -		if (inet_aton(buf, &start) != 1)
> +		if (inet_pton(AF_INET, buf, &start) != 1)
>  			goto error;
> -		else if (inet_aton(++sep, &end) != 1)
> +		else if (inet_pton(AF_INET, ++sep, &end) != 1)
>  			goto error;
>  		start.s_addr = ntohl(start.s_addr);
>  		end.s_addr = ntohl(end.s_addr);
>  	} else {
>  		if ((sep = strchr(buf, '/')) != NULL) {
>  			*sep = '\0';
> -			if (inet_aton(buf, &start) != 1)
> +			if (inet_pton(AF_INET, buf, &start) != 1)
>  				goto error;
>  			masklen = strtonum(++sep, 0, 32, &errstr);
>  			if (errstr != NULL)
>  				goto error;
>  		} else {
> -			if (inet_aton(buf, &start) != 1)
> +			if (inet_pton(AF_INET, buf, &start) != 1)
>  				goto error;
>  			masklen = 32;
>  		}
> 
> -- 
> In my defence, I have been left unsupervised.
> 
>