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).
This commit is contained in:
kamil 2018-06-24 12:05:40 +00:00
parent 081e12698b
commit e111561b93
1 changed files with 4 additions and 4 deletions

View File

@ -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