ether-addr-util: make ether_addr_from_string() stricter
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user