From: Matthew Dillon Date: Tue, 6 Dec 2011 17:21:35 +0000 (-0800) Subject: kernel - Remove unnecessary < 0 checks for sopt_valsize unsigned field + fixup X-Git-Tag: v3.0.0~468 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/5f659d166599ee5e84be6897b4cd7c630e4cc746 kernel - Remove unnecessary < 0 checks for sopt_valsize unsigned field + fixup * 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 --- diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 35760bdbca..461a671eef 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -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);