bug in sockopt() error handling in accept
authorBill Joy <root@ucbvax.Berkeley.EDU>
Wed, 6 Oct 1982 02:30:06 +0000 (18:30 -0800)
committerBill Joy <root@ucbvax.Berkeley.EDU>
Wed, 6 Oct 1982 02:30:06 +0000 (18:30 -0800)
SCCS-vsn: sys/kern/uipc_syscalls.c 4.28

usr/src/sys/kern/uipc_syscalls.c

index eb6be4c..d88be06 100644 (file)
@@ -1,4 +1,4 @@
-/*     uipc_syscalls.c 4.28    82/10/03        */
+/*     uipc_syscalls.c 4.28    82/10/05        */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -33,13 +33,13 @@ socket()
        register struct file *fp;
        struct socketopt aopt;
 
        register struct file *fp;
        struct socketopt aopt;
 
-       if ((fp = falloc()) == NULL)
+       u.u_error = sockopt(&aopt, uap->opt);
+       if (u.u_error)
                return;
                return;
+       if ((fp = falloc()) == NULL)
+               goto freeopt;
        fp->f_flag = FREAD|FWRITE;
        fp->f_type = DTYPE_SOCKET;
        fp->f_flag = FREAD|FWRITE;
        fp->f_type = DTYPE_SOCKET;
-       u.u_error = sockopt(&aopt, uap->opt);
-       if (u.u_error)
-               goto bad;
        u.u_error = socreate(0, &so, uap->type, uap->protocol, &aopt);
        if (u.u_error)
                goto bad;
        u.u_error = socreate(0, &so, uap->type, uap->protocol, &aopt);
        if (u.u_error)
                goto bad;