Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Nov 2000 17:24:42 +0100 (CET)
From:      Alexander Leidinger <Alexander@Leidinger.net>
To:        kris@FreeBSD.ORG
Cc:        audit@FreeBSD.ORG
Subject:   Re: gcc __attributes for format strings
Message-ID:  <200011271624.eARGOir89679@Magelan.Leidinger.net>
In-Reply-To: <20001126222048.A46809@citusc17.usc.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On 26 Nov, Kris Kennaway wrote:
> Okay, looks like we can play with some gcc attributes to flag things
> as format strings. For example:
> 
> Index: create_chunk.c
> ===================================================================
> RCS file: /mnt/ncvs/src/lib/libdisk/create_chunk.c,v
> retrieving revision 1.54
> diff -u -r1.54 create_chunk.c
> --- create_chunk.c	2000/11/06 23:15:01	1.54
> +++ create_chunk.c	2000/11/27 06:14:00
> @@ -28,6 +28,8 @@
>  #include <pwd.h>
>  #include "libdisk.h"
>  
> +static void msgDebug(char *, ...) __printf0like(1,0);
> +
>  /* Clone these two from sysinstall because we need our own copies
>   * due to link order problems with `crunch'.  Feh!
>   */
> 
> __printf0like(a,b) says "treat argument 'a' as a printf format string
> which may be null, and arguments starting with 'b' are the arguments
> to the format string". b=0 is for the case of a varargs function like
> above.

From gcc.info (on -current):
---snip---
`format (ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)'
     The `format' attribute specifies that a function takes `printf',
     `scanf', or `strftime' style arguments which should be type-checked
     against a format string.  For example, the declaration:

          extern int
          my_printf (void *my_object, const char *my_format, ...)
                __attribute__ ((format (printf, 2, 3)));

     causes the compiler to check the arguments in calls to `my_printf'
     for consistency with the `printf' style format string argument
     `my_format'.
[...]
---snip---
A search in gcc.info for printflike didn't show a match.

Bye,
Alexander.

-- 
                           Reboot America.

http://www.Leidinger.net                       Alexander @ Leidinger.net
  GPG fingerprint = 7423 F3E6 3A7E B334 A9CC  B10A 1F5F 130A A638 6E7E



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200011271624.eARGOir89679>