Merge pull request #5464 from ssahani/label

socket-util: introduce address_label_valid
This commit is contained in:
Lennart Poettering 2017-02-28 15:11:57 +01:00 committed by GitHub
commit 579a121f0e
3 changed files with 23 additions and 2 deletions

View File

@ -900,6 +900,26 @@ bool ifname_valid(const char *p) {
return true;
}
bool address_label_valid(const char *p) {
if (isempty(p))
return false;
if (strlen(p) >= IFNAMSIZ)
return false;
while (*p) {
if ((uint8_t) *p >= 127U)
return false;
if ((uint8_t) *p <= 31U)
return false;
p++;
}
return true;
}
int getpeercred(int fd, struct ucred *ucred) {
socklen_t n = sizeof(struct ucred);
struct ucred u;

View File

@ -126,6 +126,7 @@ int ip_tos_to_string_alloc(int i, char **s);
int ip_tos_from_string(const char *s);
bool ifname_valid(const char *p);
bool address_label_valid(const char *p);
int getpeercred(int fd, struct ucred *ucred);
int getpeersec(int fd, char **ret);

View File

@ -821,8 +821,8 @@ int config_parse_label(
if (r < 0)
return r;
if (strlen(rvalue) >= IFNAMSIZ) {
log_syntax(unit, LOG_ERR, filename, line, 0, "Interface label is too long, ignoring assignment: %s", rvalue);
if (!address_label_valid(rvalue)) {
log_syntax(unit, LOG_ERR, filename, line, 0, "Interface label is too long or invalid, ignoring assignment: %s", rvalue);
return 0;
}