diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2022-06-03 19:44:13 +0300 |
---|---|---|
committer | Kalle Valo <kvalo@kernel.org> | 2022-06-08 11:08:34 +0300 |
commit | 9e8e9187673cb24324f9165dd47b2b28f60b0b10 (patch) | |
tree | 298c457c0103b43de6e06b6111b3534278393531 | |
parent | d38c9df53ad6cd374a047126cd6aa5c5dffb455f (diff) |
wifi: ray_cs: Utilize strnlen() in parse_addr()
Instead of doing simple operations and using an additional variable on stack,
utilize strnlen() and reuse len variable.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220603164414.48436-1-andriy.shevchenko@linux.intel.com
-rw-r--r-- | drivers/net/wireless/ray_cs.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c index 87e98ab068ed..9ac371d6cd6c 100644 --- a/drivers/net/wireless/ray_cs.c +++ b/drivers/net/wireless/ray_cs.c @@ -1643,31 +1643,29 @@ static void authenticate_timeout(struct timer_list *t) /*===========================================================================*/ static int parse_addr(char *in_str, UCHAR *out) { + int i, k; int len; - int i, j, k; int status; if (in_str == NULL) return 0; - if ((len = strlen(in_str)) < 2) + len = strnlen(in_str, ADDRLEN * 2 + 1) - 1; + if (len < 1) return 0; memset(out, 0, ADDRLEN); status = 1; - j = len - 1; - if (j > 12) - j = 12; i = 5; - while (j > 0) { - if ((k = hex_to_bin(in_str[j--])) != -1) + while (len > 0) { + if ((k = hex_to_bin(in_str[len--])) != -1) out[i] = k; else return 0; - if (j == 0) + if (len == 0) break; - if ((k = hex_to_bin(in_str[j--])) != -1) + if ((k = hex_to_bin(in_str[len--])) != -1) out[i] += k << 4; else return 0; |