From 921144856c2ceaf306402674ef9616e1b44eb3dc Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Sat, 7 Mar 2026 01:39:57 +0000 Subject: util/nvmutil: tidy up mac parsing code Signed-off-by: Leah Rowe --- util/nvmutil/nvmutil.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'util') diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index 5d2dd3ee..6a6fa936 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -40,9 +40,10 @@ static void read_gbe_file(void); static void read_gbe_file_part(size_t part, uint8_t invert); static void cmd_setmac(void); static void parse_mac_string(void); -static void set_mac_byte(size_t mac_str_pos); +static void set_mac_byte(size_t mac_byte_pos); static void check_mac_separator(size_t mac_str_pos); -static void set_mac_nib(size_t mac_str_pos, size_t mac_nib_pos); +static void set_mac_nib(size_t mac_str_pos, + size_t mac_byte_pos, size_t mac_nib_pos); static uint8_t hextonum(char ch_s); static uint8_t rhex(void); static void read_file_exact(int fd, void *buf, size_t len, @@ -480,15 +481,15 @@ parse_mac_string(void) } static void -set_mac_byte(size_t mac_byte) +set_mac_byte(size_t mac_byte_pos) { - size_t mac_str_pos = mac_byte * 3; + size_t mac_str_pos = mac_byte_pos * 3; size_t mac_nib_pos; check_mac_separator(mac_str_pos); for (mac_nib_pos = 0; mac_nib_pos < 2; mac_nib_pos++) - set_mac_nib(mac_str_pos, mac_nib_pos); + set_mac_nib(mac_str_pos, mac_byte_pos, mac_nib_pos); } static void @@ -505,11 +506,11 @@ check_mac_separator(size_t mac_str_pos) } static void -set_mac_nib(size_t mac_str_pos, size_t mac_nib_pos) +set_mac_nib(size_t mac_str_pos, + size_t mac_byte_pos, size_t mac_nib_pos) { char mac_ch; uint16_t hex_num; - size_t mac_byte_pos; mac_ch = mac_str[mac_str_pos + mac_nib_pos]; hex_num = hextonum(mac_ch); @@ -518,12 +519,10 @@ set_mac_nib(size_t mac_str_pos, size_t mac_nib_pos) err(EINVAL, "Invalid character '%c'", mac_str[mac_str_pos + mac_nib_pos]); - mac_byte_pos = mac_str_pos / 3; - /* If random, ensure that local/unicast bits are set */ if ((mac_byte_pos == 0) && (mac_nib_pos == 1) && - ((mac_ch | 0x20) == 'x' || - (mac_ch == '?'))) + ((mac_ch | 0x20) == 'x' || + (mac_ch == '?'))) hex_num = (hex_num & 0xE) | 2; /* local, unicast */ /* -- cgit v1.2.1