ether-addr-util: make ether_addr_from_string() stricter

This commit is contained in:
Yu Watanabe
2018-05-09 11:57:36 +09:00
parent 3c31f3a575
commit e5c1be89b5
4 changed files with 26 additions and 26 deletions
+6 -11
View File
@@ -281,10 +281,9 @@ int config_parse_hwaddr(const char *unit,
const char *rvalue,
void *data,
void *userdata) {
_cleanup_free_ struct ether_addr *n = NULL;
struct ether_addr **hwaddr = data;
struct ether_addr *n;
const char *start;
size_t offset;
int r;
assert(filename);
@@ -296,17 +295,13 @@ int config_parse_hwaddr(const char *unit,
if (!n)
return log_oom();
start = rvalue + strspn(rvalue, WHITESPACE);
r = ether_addr_from_string(start, n, &offset);
if (r || (start[offset + strspn(start + offset, WHITESPACE)] != '\0')) {
log_syntax(unit, LOG_ERR, filename, line, 0, "Not a valid MAC address, ignoring assignment: %s", rvalue);
free(n);
r = ether_addr_from_string(rvalue, n);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, r, "Not a valid MAC address, ignoring assignment: %s", rvalue);
return 0;
}
free(*hwaddr);
*hwaddr = n;
*hwaddr = TAKE_PTR(n);
return 0;
}