diff options
| author | Leah Rowe <leah@libreboot.org> | 2026-03-07 01:39:57 +0000 |
|---|---|---|
| committer | Leah Rowe <leah@libreboot.org> | 2026-03-07 01:39:57 +0000 |
| commit | 921144856c2ceaf306402674ef9616e1b44eb3dc (patch) | |
| tree | 38388da3896ff693a9dfb415e001caa2bec2ab10 /util/nvmutil | |
| parent | 86357dbe525badb9410745618434a2517122241b (diff) | |
util/nvmutil: tidy up mac parsing code
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'util/nvmutil')
| -rw-r--r-- | util/nvmutil/nvmutil.c | 21 |
1 files changed, 10 insertions, 11 deletions
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 */ /* |
