kernel - Remove unnecessary < 0 checks for sopt_valsize unsigned field + fixup
authorMatthew Dillon <dillon@apollo.backplane.com>
Tue, 6 Dec 2011 17:21:35 +0000 (09:21 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Tue, 6 Dec 2011 17:21:35 +0000 (09:21 -0800)
* Remove unnecessary < 0 checks for sopt_valsize, which is an unsigned field

* Add an upper-bound test in one place which did not have it.

Reported-by: Edward O'callaghan, logan1
sys/kern/uipc_syscalls.c

index 35760bd..461a671 100644 (file)
@@ -1102,7 +1102,7 @@ kern_setsockopt(int s, struct sockopt *sopt)
                return (EFAULT);
        if (sopt->sopt_val != NULL && sopt->sopt_valsize == 0)
                return (EINVAL);
-       if (sopt->sopt_valsize < 0)
+       if (sopt->sopt_valsize > SOMAXOPT_SIZE) /* unsigned */
                return (EINVAL);
 
        error = holdsock(p->p_fd, s, &fp);
@@ -1132,7 +1132,7 @@ sys_setsockopt(struct setsockopt_args *uap)
        sopt.sopt_td = td;
        sopt.sopt_val = NULL;
 
-       if (sopt.sopt_valsize < 0 || sopt.sopt_valsize > SOMAXOPT_SIZE)
+       if (sopt.sopt_valsize > SOMAXOPT_SIZE) /* unsigned */
                return (EINVAL);
        if (uap->val) {
                sopt.sopt_val = kmalloc(sopt.sopt_valsize, M_TEMP, M_WAITOK);
@@ -1165,7 +1165,7 @@ kern_getsockopt(int s, struct sockopt *sopt)
                return (EFAULT);
        if (sopt->sopt_val != NULL && sopt->sopt_valsize == 0)
                return (EINVAL);
-       if (sopt->sopt_valsize < 0 || sopt->sopt_valsize > SOMAXOPT_SIZE)
+       if (sopt->sopt_valsize > SOMAXOPT_SIZE) /* unsigned */
                return (EINVAL);
 
        error = holdsock(p->p_fd, s, &fp);
@@ -1203,7 +1203,7 @@ sys_getsockopt(struct getsockopt_args *uap)
        sopt.sopt_td = td;
        sopt.sopt_val = NULL;
 
-       if (sopt.sopt_valsize < 0 || sopt.sopt_valsize > SOMAXOPT_SIZE)
+       if (sopt.sopt_valsize > SOMAXOPT_SIZE) /* unsigned */
                return (EINVAL);
        if (uap->val) {
                sopt.sopt_val = kmalloc(sopt.sopt_valsize, M_TEMP, M_WAITOK);