diff options
Diffstat (limited to 'util')
| -rw-r--r-- | util/nvmutil/nvmutil.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/util/nvmutil/nvmutil.c b/util/nvmutil/nvmutil.c index 6a6fa936..31392849 100644 --- a/util/nvmutil/nvmutil.c +++ b/util/nvmutil/nvmutil.c @@ -41,9 +41,8 @@ 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_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_byte_pos, size_t mac_nib_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, @@ -485,36 +484,29 @@ set_mac_byte(size_t mac_byte_pos) { size_t mac_str_pos = mac_byte_pos * 3; size_t mac_nib_pos; + char separator; - check_mac_separator(mac_str_pos); + if (mac_str_pos < 15) { + separator = mac_str[mac_str_pos + 2]; + if (mac_str[mac_str_pos + 2] != ':') + err(EINVAL, "Invalid MAC address separator '%c'", + separator); + } for (mac_nib_pos = 0; mac_nib_pos < 2; mac_nib_pos++) set_mac_nib(mac_str_pos, mac_byte_pos, mac_nib_pos); } static void -check_mac_separator(size_t mac_str_pos) -{ - char separator; - - if (mac_str_pos == 15) - return; - if ((separator = mac_str[mac_str_pos + 2]) == ':') - return; - - err(EINVAL, "Invalid MAC address separator '%c'", separator); -} - -static void set_mac_nib(size_t mac_str_pos, - size_t mac_byte_pos, size_t mac_nib_pos) + size_t mac_byte_pos, size_t mac_nib_pos) { char mac_ch; uint16_t hex_num; mac_ch = mac_str[mac_str_pos + mac_nib_pos]; - hex_num = hextonum(mac_ch); + hex_num = hextonum(mac_ch); if (hex_num > 15) err(EINVAL, "Invalid character '%c'", mac_str[mac_str_pos + mac_nib_pos]); |
