[Dnsmasq-discuss] [PATCH 2/2] Printf related fixes

Rosen Penev rosenp at gmail.com
Wed Jun 28 22:21:49 BST 2017


As far as I can tell, BSDs use GCC 4.2.1 because of GPLv2. The format
attribute has been supported since at least 3.3.2. It's not a C89 issue.
Clang has always supported the attribute. Most BSDs have migrated to Clang
because of License.

Not that I'm against removing the attribute. Just curious about the reason.
Avoiding potential breakage is good.

On Wed, Jun 28, 2017, 13:59 Simon Kelley <simon at thekelleys.org.uk> wrote:

> On 28/06/17 03:20, Rosen Penev wrote:
> > AFAIK Clang and GCC both support it. Any other relevant compilers?
> >
> >
>
> What do *BSD use? dnsmasq supports them? Policy is C89 and always has been.
>
>
> Cheers,
>
> Simon.
>
>
> > On Tue, Jun 27, 2017, 15:40 Simon Kelley <simon at thekelleys.org.uk
> > <mailto:simon at thekelleys.org.uk>> wrote:
> >
> >     Patch applied, with the exception of the gcc-specific __attribute__
> >     stuff.
> >
> >
> >     Cheers,
> >
> >     Simon.
> >
> >     On 27/06/17 00:37, Rosen Penev wrote:
> >     > ---
> >     >  contrib/lease-tools/dhcp_lease_time.c | 8 ++++----
> >     >  src/auth.c                            | 6 +++---
> >     >  src/cache.c                           | 2 +-
> >     >  src/dnsmasq.h                         | 3 +++
> >     >  src/lease.c                           | 1 +
> >     >  src/option.c                          | 2 +-
> >     >  src/tftp.c                            | 2 +-
> >     >  src/util.c                            | 8 ++++----
> >     >  8 files changed, 18 insertions(+), 14 deletions(-)
> >     >
> >     > diff --git a/contrib/lease-tools/dhcp_lease_time.c
> >     b/contrib/lease-tools/dhcp_lease_time.c
> >     > index fc00ff1..f9d7a85 100644
> >     > --- a/contrib/lease-tools/dhcp_lease_time.c
> >     > +++ b/contrib/lease-tools/dhcp_lease_time.c
> >     > @@ -206,13 +206,13 @@ int main(int argc, char **argv)
> >     >       {
> >     >         unsigned int x;
> >     >         if ((x = t/86400))
> >     > -         printf("%dd", x);
> >     > +         printf("%ud", x);
> >     >         if ((x = (t/3600)%24))
> >     > -         printf("%dh", x);
> >     > +         printf("%uh", x);
> >     >         if ((x = (t/60)%60))
> >     > -         printf("%dm", x);
> >     > +         printf("%um", x);
> >     >         if ((x = t%60))
> >     > -         printf("%ds", x);
> >     > +         printf("%us", x);
> >     >       }
> >     >        return 0;
> >     >      }
> >     > diff --git a/src/auth.c b/src/auth.c
> >     > index 4489eac..2c24e16 100644
> >     > --- a/src/auth.c
> >     > +++ b/src/auth.c
> >     > @@ -597,12 +597,12 @@ size_t answer_auth(struct dns_header
> >     *header, char *limit, size_t qlen, time_t n
> >     >             char *p = name;
> >     >
> >     >             if (subnet->prefixlen >= 24)
> >     > -             p += sprintf(p, "%d.", a & 0xff);
> >     > +             p += sprintf(p, "%u.", a & 0xff);
> >     >             a = a >> 8;
> >     >             if (subnet->prefixlen >= 16 )
> >     > -             p += sprintf(p, "%d.", a & 0xff);
> >     > +             p += sprintf(p, "%u.", a & 0xff);
> >     >             a = a >> 8;
> >     > -           p += sprintf(p, "%d.in-addr.arpa", a & 0xff);
> >     > +           p += sprintf(p, "%u.in-addr.arpa", a & 0xff);
> >     >
> >     >           }
> >     >  #ifdef HAVE_IPV6
> >     > diff --git a/src/cache.c b/src/cache.c
> >     > index bf585fe..a719d95 100644
> >     > --- a/src/cache.c
> >     > +++ b/src/cache.c
> >     > @@ -1511,7 +1511,7 @@ void dump_cache(time_t now)
> >     >           /* ctime includes trailing \n - eat it */
> >     >           *(p-1) = 0;
> >     >  #endif
> >     > -         my_syslog(LOG_INFO, daemon->namebuff);
> >     > +         my_syslog(LOG_INFO, "%s", daemon->namebuff);
> >     >         }
> >     >      }
> >     >  }
> >     > diff --git a/src/dnsmasq.h b/src/dnsmasq.h
> >     > index 84083cc..44e26c7 100644
> >     > --- a/src/dnsmasq.h
> >     > +++ b/src/dnsmasq.h
> >     > @@ -1212,7 +1212,10 @@ int wildcard_matchn(const char* wildcard,
> >     const char* match, int num);
> >     >  void die(char *message, char *arg1, int exit_code);
> >     >  int log_start(struct passwd *ent_pw, int errfd);
> >     >  int log_reopen(char *log_file);
> >     > +
> >     > +__attribute__ ((format (printf, 2, 3)))
> >     >  void my_syslog(int priority, const char *format, ...);
> >     > +
> >     >  void set_log_writer(void);
> >     >  void check_log_writer(int force);
> >     >  void flush_log(void);
> >     > diff --git a/src/lease.c b/src/lease.c
> >     > index 634372d..1970ba9 100644
> >     > --- a/src/lease.c
> >     > +++ b/src/lease.c
> >     > @@ -230,6 +230,7 @@ void lease_update_from_configs(void)
> >     >        lease_set_hostname(lease, name, 1, get_domain(lease->addr),
> >     NULL); /* updates auth flag only */
> >     >  }
> >     >
> >     > +__attribute__ ((format (printf, 2, 3)))
> >     >  static void ourprintf(int *errp, char *format, ...)
> >     >  {
> >     >    va_list ap;
> >     > diff --git a/src/option.c b/src/option.c
> >     > index 78ad81e..6a14c4d 100644
> >     > --- a/src/option.c
> >     > +++ b/src/option.c
> >     > @@ -882,7 +882,7 @@ static struct server *add_rev4(struct in_addr
> >     addr, int msize)
> >     >    switch (msize)
> >     >      {
> >     >      case 32:
> >     > -      p += sprintf(p, "%d.", a & 0xff);
> >     > +      p += sprintf(p, "%u.", a & 0xff);
> >     >        /* fall through */
> >     >      case 24:
> >     >        p += sprintf(p, "%d.", (a >> 8) & 0xff);
> >     > diff --git a/src/tftp.c b/src/tftp.c
> >     > index 8b27c7b..131e6de 100644
> >     > --- a/src/tftp.c
> >     > +++ b/src/tftp.c
> >     > @@ -734,7 +734,7 @@ static ssize_t get_block(char *packet, struct
> >     tftp_transfer *transfer)
> >     >        if (transfer->opt_blocksize)
> >     >       {
> >     >         p += (sprintf(p, "blksize") + 1);
> >     > -       p += (sprintf(p, "%d", transfer->blocksize) + 1);
> >     > +       p += (sprintf(p, "%u", transfer->blocksize) + 1);
> >     >       }
> >     >        if (transfer->opt_transize)
> >     >       {
> >     > diff --git a/src/util.c b/src/util.c
> >     > index 66128a9..bb6dba3 100644
> >     > --- a/src/util.c
> >     > +++ b/src/util.c
> >     > @@ -448,13 +448,13 @@ void prettyprint_time(char *buf, unsigned
> int t)
> >     >      {
> >     >        unsigned int x, p = 0;
> >     >         if ((x = t/86400))
> >     > -     p += sprintf(&buf[p], "%dd", x);
> >     > +     p += sprintf(&buf[p], "%ud", x);
> >     >         if ((x = (t/3600)%24))
> >     > -     p += sprintf(&buf[p], "%dh", x);
> >     > +     p += sprintf(&buf[p], "%uh", x);
> >     >        if ((x = (t/60)%60))
> >     > -     p += sprintf(&buf[p], "%dm", x);
> >     > +     p += sprintf(&buf[p], "%um", x);
> >     >        if ((x = t%60))
> >     > -     p += sprintf(&buf[p], "%ds", x);
> >     > +     p += sprintf(&buf[p], "%us", x);
> >     >      }
> >     >  }
> >     >
> >     >
> >
> >
> >     _______________________________________________
> >     Dnsmasq-discuss mailing list
> >     Dnsmasq-discuss at lists.thekelleys.org.uk
> >     <mailto:Dnsmasq-discuss at lists.thekelleys.org.uk>
> >     http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/attachments/20170628/8d67e25d/attachment-0001.html>


More information about the Dnsmasq-discuss mailing list