]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
socket-util: introduce address_label_valid
authorSusant Sahani <susant@redhat.com>
Tue, 28 Feb 2017 11:23:58 +0000 (16:53 +0530)
committerSusant Sahani <susant@redhat.com>
Tue, 28 Feb 2017 11:23:58 +0000 (16:53 +0530)
src/basic/socket-util.c
src/basic/socket-util.h

index 17e90a89949ee4008e8b3cb1e5988b8d390b7a37..e5847dce00ac6a98330bd83e355bc723d7f44c40 100644 (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;
index 3c42e220e58df4d83121f77db6a8570fc8bf6142..73c3a339fc61a493d56c5b4ad875c657003c3726 100644 (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);