Fix MAC address parsing
This commit is contained in:
parent
4d69e844c4
commit
6e5156e137
1 changed files with 5 additions and 6 deletions
11
nmrp.c
11
nmrp.c
|
|
@ -246,12 +246,13 @@ static int sock_bind_to_intf(int sock, const char *name)
|
||||||
|
|
||||||
static int mac_parse(const char *str, uint8_t *hwaddr)
|
static int mac_parse(const char *str, uint8_t *hwaddr)
|
||||||
{
|
{
|
||||||
unsigned i, data[6];
|
int i;
|
||||||
|
unsigned data[6];
|
||||||
|
|
||||||
i = sscanf(str, "%02x:%02x:%02x:%02x:%02x:%02x",
|
sscanf(str, "%02x:%02x:%02x:%02x:%02x:%02x%n",
|
||||||
data, data + 1, data + 2, data + 3, data + 4, data + 5);
|
data, data + 1, data + 2, data + 3, data + 4, data + 5, &i);
|
||||||
|
|
||||||
if (i == 6) {
|
if (i == strlen(str)) {
|
||||||
for (i = 0; i != 6; ++i) {
|
for (i = 0; i != 6; ++i) {
|
||||||
if (data[i] > 255) {
|
if (data[i] > 255) {
|
||||||
break;
|
break;
|
||||||
|
|
@ -264,8 +265,6 @@ static int mac_parse(const char *str, uint8_t *hwaddr)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "Invalid MAC address.\n");
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue