Module Name:    src
Committed By:   kamil
Date:           Sun Jun 24 12:05:41 UTC 2018

Modified Files:
        src/sys/sys: fd_set.h

Log Message:
Prevent signed integer left shift UB in FD_SET(), FD_CLR(), FD_ISSET()

Set the type of shifted integer 1 to unsigned int.

Detected with MKSANITIZER/UBSan in sysinst(8).


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/sys/fd_set.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/sys/fd_set.h
diff -u src/sys/sys/fd_set.h:1.6 src/sys/sys/fd_set.h:1.7
--- src/sys/sys/fd_set.h:1.6	Fri Nov  6 15:41:25 2015
+++ src/sys/sys/fd_set.h	Sun Jun 24 12:05:40 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: fd_set.h,v 1.6 2015/11/06 15:41:25 christos Exp $	*/
+/*	$NetBSD: fd_set.h,v 1.7 2018/06/24 12:05:40 kamil Exp $	*/
 
 /*-
  * Copyright (c) 1992, 1993
@@ -68,11 +68,11 @@ typedef	struct fd_set {
 } fd_set;
 
 #define	FD_SET(n, p)	\
-    ((p)->fds_bits[(unsigned)(n) >> __NFDSHIFT] |= (1 << ((n) & __NFDMASK)))
+    ((p)->fds_bits[(unsigned)(n) >> __NFDSHIFT] |= (1U << ((n) & __NFDMASK)))
 #define	FD_CLR(n, p)	\
-    ((p)->fds_bits[(unsigned)(n) >> __NFDSHIFT] &= ~(1 << ((n) & __NFDMASK)))
+    ((p)->fds_bits[(unsigned)(n) >> __NFDSHIFT] &= ~(1U << ((n) & __NFDMASK)))
 #define	FD_ISSET(n, p)	\
-    ((p)->fds_bits[(unsigned)(n) >> __NFDSHIFT] & (1 << ((n) & __NFDMASK)))
+    ((p)->fds_bits[(unsigned)(n) >> __NFDSHIFT] & (1U << ((n) & __NFDMASK)))
 #if __GNUC_PREREQ__(2, 95)
 #define	FD_ZERO(p)	(void)__builtin_memset((p), 0, sizeof(*(p)))
 #else

Reply via email to