All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH iproute2] bridge: use strtoi instead of atoi for checking value of cost/priority
@ 2021-11-11  9:33 15720603159
  2021-11-11 11:06 ` Denis Kirjanov
  0 siblings, 1 reply; 2+ messages in thread
From: 15720603159 @ 2021-11-11  9:33 UTC (permalink / raw)
  To: netdev; +Cc: jinag

From: jinag <jinag12138@gmail.com>

Signed-off-by: jinag <jinag12138@gmail.com>
---
 bridge/link.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/bridge/link.c b/bridge/link.c
index 205a2fe7..d60e1106 100644
--- a/bridge/link.c
+++ b/bridge/link.c
@@ -308,13 +308,14 @@ static int brlink_modify(int argc, char **argv)
 	__s8 bpdu_guard = -1;
 	__s8 fast_leave = -1;
 	__s8 root_block = -1;
-	__u32 cost = 0;
+	__s32 cost = 0;
 	__s16 priority = -1;
 	__s8 state = -1;
 	__s16 mode = -1;
 	__u16 flags = 0;
 	struct rtattr *nest;
 	int ret;
+	char *end = NULL;
 
 	while (argc > 0) {
 		if (strcmp(*argv, "dev") == 0) {
@@ -367,10 +368,19 @@ static int brlink_modify(int argc, char **argv)
 				return ret;
 		} else if (strcmp(*argv, "cost") == 0) {
 			NEXT_ARG();
-			cost = atoi(*argv);
+			cost = strtoul(*argv, &end, 10);
+			if ((cost <= 0) || (end == NULL) || (*end != '\0')) {
+				fprintf(stderr, "Error: invalid cost value\n");
+				return -1;
+			}
 		} else if (strcmp(*argv, "priority") == 0) {
 			NEXT_ARG();
 			priority = atoi(*argv);
+			priority = strtol(*argv, &end, 10);
+			if ((priority < 0) || (end == NULL) || (*end != '\0')) {
+				fprintf(stderr, "Error: invalid priority\n");
+				return -1;
+			}
 		} else if (strcmp(*argv, "state") == 0) {
 			NEXT_ARG();
 			char *endptr;
-- 
2.30.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH iproute2] bridge: use strtoi instead of atoi for checking value of cost/priority
  2021-11-11  9:33 [PATCH iproute2] bridge: use strtoi instead of atoi for checking value of cost/priority 15720603159
@ 2021-11-11 11:06 ` Denis Kirjanov
  0 siblings, 0 replies; 2+ messages in thread
From: Denis Kirjanov @ 2021-11-11 11:06 UTC (permalink / raw)
  To: 15720603159, netdev; +Cc: jinag



11/11/21 12:33 PM, 15720603159@163.com пишет:
> From: jinag <jinag12138@gmail.com>
> 
> Signed-off-by: jinag <jinag12138@gmail.com>
> ---
>   bridge/link.c | 14 ++++++++++++--
>   1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/bridge/link.c b/bridge/link.c
> index 205a2fe7..d60e1106 100644
> --- a/bridge/link.c
> +++ b/bridge/link.c
> @@ -308,13 +308,14 @@ static int brlink_modify(int argc, char **argv)
>   	__s8 bpdu_guard = -1;
>   	__s8 fast_leave = -1;
>   	__s8 root_block = -1;
> -	__u32 cost = 0;
> +	__s32 cost = 0;
>   	__s16 priority = -1;
>   	__s8 state = -1;
>   	__s16 mode = -1;
>   	__u16 flags = 0;
>   	struct rtattr *nest;
>   	int ret;
> +	char *end = NULL;
>   
>   	while (argc > 0) {
>   		if (strcmp(*argv, "dev") == 0) {
> @@ -367,10 +368,19 @@ static int brlink_modify(int argc, char **argv)
>   				return ret;
>   		} else if (strcmp(*argv, "cost") == 0) {
>   			NEXT_ARG();
> -			cost = atoi(*argv);
> +			cost = strtoul(*argv, &end, 10);
does it return a signed value?
> +			if ((cost <= 0) || (end == NULL) || (*end != '\0')) {
> +				fprintf(stderr, "Error: invalid cost value\n");
> +				return -1;
> +			}
>   		} else if (strcmp(*argv, "priority") == 0) {
>   			NEXT_ARG();
>   			priority = atoi(*argv);
> +			priority = strtol(*argv, &end, 10);
> +			if ((priority < 0) || (end == NULL) || (*end != '\0')) {
> +				fprintf(stderr, "Error: invalid priority\n");
> +				return -1;
> +			}
>   		} else if (strcmp(*argv, "state") == 0) {
>   			NEXT_ARG();
>   			char *endptr;
> 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-11-11 11:06 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-11  9:33 [PATCH iproute2] bridge: use strtoi instead of atoi for checking value of cost/priority 15720603159
2021-11-11 11:06 ` Denis Kirjanov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.