Any objection or ok?

On Sat, Mar 27, 2021 at 12:52:11PM +0100, Eric Faurot wrote:
> Hello.
>
> I get reports from people seeing "vfprintf %s NULL" in their logs
> recently. The problem is in a function that should be fixed,
> but that function is only expected to but used for debug traces.
> 
> This diff turns log_trace() into a macro, so the parameters
> are not needlessly evaluated when tracing is not set.
> 
> Eric.
> 
> Index: smtpd.h
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/smtpd.h,v
> retrieving revision 1.662
> diff -u -p -r1.662 smtpd.h
> --- smtpd.h   5 Mar 2021 12:37:32 -0000       1.662
> +++ smtpd.h   23 Mar 2021 07:16:39 -0000
> @@ -1747,8 +1747,9 @@ int base64_encode_rfc3548(unsigned char 
>                     char *, size_t);
>  
>  void log_trace_verbose(int);
> -void log_trace(int, const char *, ...)
> -    __attribute__((format (printf, 2, 3)));
> +void log_trace0(const char *, ...)
> +    __attribute__((format (printf, 1, 2)));
> +#define log_trace(m, ...)  do { if (tracing & (m)) log_trace0(__VA_ARGS__); 
> } while (0)
>  
>  /* waitq.c */
>  int  waitq_wait(void *, void (*)(void *, void *, void *), void *);
> Index: util.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/smtpd/util.c,v
> retrieving revision 1.152
> diff -u -p -r1.152 util.c
> --- util.c    29 Nov 2020 20:07:38 -0000      1.152
> +++ util.c    23 Mar 2021 07:17:05 -0000
> @@ -823,15 +823,13 @@ base64_encode_rfc3548(unsigned char cons
>  }
>  
>  void
> -log_trace(int mask, const char *emsg, ...)
> +log_trace0(const char *emsg, ...)
>  {
>       va_list  ap;
>  
> -     if (tracing & mask) {
> -             va_start(ap, emsg);
> -             vlog(LOG_DEBUG, emsg, ap);
> -             va_end(ap);
> -     }
> +     va_start(ap, emsg);
> +     vlog(LOG_DEBUG, emsg, ap);
> +     va_end(ap);
>  }
>  
>  void
> 
> 

Reply via email to