On Sat, 4 Apr 2020, Theo de Raadt wrote: > Philip Guenther <guent...@gmail.com> wrote: > > > On Fri, 3 Apr 2020, Martin Pieuchot wrote: > > > Thanks, here it is, ok? > > > > ok guenther@ > > Should we do the same to all other macros, just in case?
Checking /usr/include/{,sys/}*.h, the diff below fixes the only ones I found to be potential problems /usr/include/net* and some others have not-completely-safe macros, like IP6_EXTHDR_GET() Index: include/bitstring.h =================================================================== RCS file: /data/src/openbsd/src/include/bitstring.h,v retrieving revision 1.5 diff -u -p -r1.5 bitstring.h --- include/bitstring.h 2 Jun 2003 19:34:12 -0000 1.5 +++ include/bitstring.h 6 Apr 2020 00:37:52 -0000 @@ -83,46 +83,46 @@ typedef unsigned char bitstr_t; /* clear bits start ... stop in bitstring */ #define bit_nclear(name, start, stop) do { \ - register bitstr_t *_name = name; \ - register int _start = start, _stop = stop; \ - while (_start <= _stop) { \ - bit_clear(_name, _start); \ - _start++; \ + register bitstr_t *__name = (name); \ + register int ___start = (start), __stop = (stop); \ + while (__start <= __stop) { \ + bit_clear(__name, __start); \ + __start++; \ } \ } while(0) /* set bits start ... stop in bitstring */ #define bit_nset(name, start, stop) do { \ - register bitstr_t *_name = name; \ - register int _start = start, _stop = stop; \ - while (_start <= _stop) { \ - bit_set(_name, _start); \ - _start++; \ + register bitstr_t *__name = (name); \ + register int __start = (start), __stop = (stop); \ + while (__start <= __stop) { \ + bit_set(__name, __start); \ + __start++; \ } \ } while(0) /* find first bit clear in name */ #define bit_ffc(name, nbits, value) do { \ - register bitstr_t *_name = name; \ - register int _bit, _nbits = nbits, _value = -1; \ - for (_bit = 0; _bit < _nbits; ++_bit) \ - if (!bit_test(_name, _bit)) { \ - _value = _bit; \ + register bitstr_t *__name = (name); \ + register int __bit, __nbits = (nbits), __value = -1; \ + for (__bit = 0; __bit < __nbits; ++__bit) \ + if (!bit_test(__name, __bit)) { \ + __value = __bit; \ break; \ } \ - *(value) = _value; \ + *(value) = __value; \ } while(0) /* find first bit set in name */ #define bit_ffs(name, nbits, value) do { \ - register bitstr_t *_name = name; \ - register int _bit, _nbits = nbits, _value = -1; \ - for (_bit = 0; _bit < _nbits; ++_bit) \ - if (bit_test(_name, _bit)) { \ - _value = _bit; \ + register bitstr_t *__name = (name); \ + register int __bit, __nbits = (nbits), __value = -1; \ + for (__bit = 0; __bit < __nbits; ++__bit) \ + if (bit_test(__name, __bit)) { \ + __value = __bit; \ break; \ } \ - *(value) = _value; \ + *(value) = __value; \ } while(0) #endif /* !_BITSTRING_H_ */ Index: sys/sys/disklabel.h =================================================================== RCS file: /data/src/openbsd/src/sys/sys/disklabel.h,v retrieving revision 1.75 diff -u -p -r1.75 disklabel.h --- sys/sys/disklabel.h 24 Oct 2017 09:36:13 -0000 1.75 +++ sys/sys/disklabel.h 6 Apr 2020 00:52:08 -0000 @@ -156,37 +156,37 @@ struct __partitionv0 { /* old (v0) part #define DL_GETPSIZE(p) (((u_int64_t)(p)->p_sizeh << 32) + (p)->p_size) #define DL_SETPSIZE(p, n) do { \ - u_int64_t x = (n); \ - (p)->p_sizeh = x >> 32; \ - (p)->p_size = x; \ + u_int64_t __x = (n); \ + (p)->p_sizeh = __x >> 32; \ + (p)->p_size = __x; \ } while (0) #define DL_GETPOFFSET(p) (((u_int64_t)(p)->p_offseth << 32) + (p)->p_offset) #define DL_SETPOFFSET(p, n) do { \ - u_int64_t x = (n); \ - (p)->p_offseth = x >> 32; \ - (p)->p_offset = x; \ + u_int64_t __x = (n); \ + (p)->p_offseth = __x >> 32; \ + (p)->p_offset = __x; \ } while (0) #define DL_GETDSIZE(d) (((u_int64_t)(d)->d_secperunith << 32) + \ (d)->d_secperunit) #define DL_SETDSIZE(d, n) do { \ - u_int64_t x = (n); \ - (d)->d_secperunith = x >> 32; \ - (d)->d_secperunit = x; \ + u_int64_t __x = (n); \ + (d)->d_secperunith = __x >> 32; \ + (d)->d_secperunit = __x; \ } while (0) #define DL_GETBSTART(d) (((u_int64_t)(d)->d_bstarth << 32) + \ (d)->d_bstart) #define DL_SETBSTART(d, n) do { \ - u_int64_t x = (n); \ - (d)->d_bstarth = x >> 32; \ - (d)->d_bstart = x; \ + u_int64_t __x = (n); \ + (d)->d_bstarth = __x >> 32; \ + (d)->d_bstart = __x; \ } while (0) #define DL_GETBEND(d) (((u_int64_t)(d)->d_bendh << 32) + \ (d)->d_bend) #define DL_SETBEND(d, n) do { \ - u_int64_t x = (n); \ - (d)->d_bendh = x >> 32; \ - (d)->d_bend = x; \ + u_int64_t __x = (n); \ + (d)->d_bendh = __x >> 32; \ + (d)->d_bend = __x; \ } while (0) #define DL_BLKSPERSEC(d) ((d)->d_secsize / DEV_BSIZE) Index: sys/sys/event.h =================================================================== RCS file: /data/src/openbsd/src/sys/sys/event.h,v retrieving revision 1.34 diff -u -p -r1.34 event.h --- sys/sys/event.h 4 Apr 2020 08:57:36 -0000 1.34 +++ sys/sys/event.h 6 Apr 2020 01:17:53 -0000 @@ -132,10 +132,10 @@ SLIST_HEAD(klist, knote); */ #define NOTE_SUBMIT 0x01000000 /* initial knote submission */ -#define KNOTE(list_, hint) do { \ - struct klist *list = (list_); \ - if ((list) != NULL) \ - knote((list), (hint)); \ +#define KNOTE(list, hint) do { \ + struct klist *__list = (list); \ + if (__list != NULL) \ + knote(__list, hint); \ } while (0) #define KN_HASHSIZE 64 /* XXX should be tunable */ Index: sys/sys/exec.h =================================================================== RCS file: /data/src/openbsd/src/sys/sys/exec.h,v retrieving revision 1.40 diff -u -p -r1.40 exec.h --- sys/sys/exec.h 29 Nov 2019 06:34:46 -0000 1.40 +++ sys/sys/exec.h 6 Apr 2020 01:03:03 -0000 @@ -179,18 +179,18 @@ void new_vmcmd(struct exec_vmcmd_set *ev #define NEW_VMCMD(evsp,proc,len,addr,vp,offset,prot) \ NEW_VMCMD2(evsp,proc,len,addr,vp,offset,prot,0) #define NEW_VMCMD2(evsp,proc,len,addr,vp,offset,prot,flags) do { \ - struct exec_vmcmd *vcp; \ + struct exec_vmcmd *__vcp; \ if ((evsp)->evs_used >= (evsp)->evs_cnt) \ vmcmdset_extend(evsp); \ - vcp = &(evsp)->evs_cmds[(evsp)->evs_used++]; \ - vcp->ev_proc = (proc); \ - vcp->ev_len = (len); \ - vcp->ev_addr = (addr); \ - if ((vcp->ev_vp = (vp)) != NULLVP) \ + __vcp = &(evsp)->evs_cmds[(evsp)->evs_used++]; \ + __vcp->ev_proc = (proc); \ + __vcp->ev_len = (len); \ + __vcp->ev_addr = (addr); \ + if ((__vcp->ev_vp = (vp)) != NULLVP) \ vref(vp); \ - vcp->ev_offset = (offset); \ - vcp->ev_prot = (prot); \ - vcp->ev_flags = (flags); \ + __vcp->ev_offset = (offset); \ + __vcp->ev_prot = (prot); \ + __vcp->ev_flags = (flags); \ } while (0) #endif /* DEBUG */ Index: sys/sys/signalvar.h =================================================================== RCS file: /data/src/openbsd/src/sys/sys/signalvar.h,v retrieving revision 1.40 diff -u -p -r1.40 signalvar.h --- sys/sys/signalvar.h 13 Mar 2020 09:25:21 -0000 1.40 +++ sys/sys/signalvar.h 5 Apr 2020 22:23:16 -0000 @@ -86,9 +86,9 @@ struct sigacts { * Clear a pending signal from a process. */ #define CLRSIG(p, sig) do { \ - int _mask = sigmask(sig); \ - atomic_clearbits_int(&(p)->p_siglist, _mask); \ - atomic_clearbits_int(&(p)->p_p->ps_siglist, _mask); \ + int __mask = sigmask(sig); \ + atomic_clearbits_int(&(p)->p_siglist, __mask); \ + atomic_clearbits_int(&(p)->p_p->ps_siglist, __mask); \ } while (0) /* Index: sys/sys/sysctl.h =================================================================== RCS file: /data/src/openbsd/src/sys/sys/sysctl.h,v retrieving revision 1.205 diff -u -p -r1.205 sysctl.h --- sys/sys/sysctl.h 13 Mar 2020 10:07:01 -0000 1.205 +++ sys/sys/sysctl.h 6 Apr 2020 01:13:40 -0000 @@ -679,7 +679,7 @@ do { \ PR_UNLOCK(pr); \ \ if (((pr)->ps_flags & PS_ZOMBIE) == 0) { \ - struct timeval tv; \ + struct timeval __tv; \ \ (kp)->p_uvalid = 1; \ \ @@ -699,9 +699,9 @@ do { \ (kp)->p_uru_nivcsw = (p)->p_ru.ru_nivcsw; \ \ timeradd(&(pr)->ps_cru.ru_utime, \ - &(pr)->ps_cru.ru_stime, &tv); \ - (kp)->p_uctime_sec = tv.tv_sec; \ - (kp)->p_uctime_usec = tv.tv_usec; \ + &(pr)->ps_cru.ru_stime, &__tv); \ + (kp)->p_uctime_sec = __tv.tv_sec; \ + (kp)->p_uctime_usec = __tv.tv_usec; \ } \ \ (kp)->p_cpuid = KI_NOCPU; \