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