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;                                       \

Reply via email to