chiark / gitweb /
stest/udp-preload.c: Fix error handling of sun_prep
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 5 Dec 2019 02:15:45 +0000 (02:15 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 7 Dec 2019 15:49:34 +0000 (15:49 +0000)
If sun_prep returned an error (eg, path too long), this would
segfault.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
stest/udp-preload.c

index 688df972b418d50a99af1f58a99b913d2166c4a7..1f3e7e3921a26a1717b56e770352078c87cbd68d 100644 (file)
@@ -216,6 +216,7 @@ WRAP(bind) {
     if (!ent) return old_bind(fd,addr,addrlen);
     struct sockaddr_un sun;
     char *p=sun_prep(&sun);
+    if (!p) return -1;
     if (addrport2str(p,addr,addrlen)) return -1;
 //fprintf(stderr,"binding %s\n",sun.sun_path);
     if (unlink(sun.sun_path) && errno!=ENOENT) return -1;
@@ -262,6 +263,7 @@ ssize_t TWRAP(sendto) {
     if (strlen(leaf) > ADDRPORTSTRLEN) { errno=ENAMETOOLONG; return -1; }
     struct sockaddr_un sun;
     char *p=sun_prep(&sun);
+    if (!p) return -1;
     strcpy(p,leaf);
 
     char tbuf[ADDRPORTSTRLEN+1];