diff options
| author | Ken Raeburn <raeburn@mit.edu> | 2007-06-29 01:01:24 +0000 |
|---|---|---|
| committer | Ken Raeburn <raeburn@mit.edu> | 2007-06-29 01:01:24 +0000 |
| commit | f8369e867bcb6ff44d2ee12fc79070b869d41abd (patch) | |
| tree | 93742abe35959d7f3897d6f3b43ca37921d59a82 /src/lib | |
| parent | 0708ecde434afdabb8412d6af61a0c717af56abb (diff) | |
| download | krb5-f8369e867bcb6ff44d2ee12fc79070b869d41abd.tar.gz krb5-f8369e867bcb6ff44d2ee12fc79070b869d41abd.tar.xz krb5-f8369e867bcb6ff44d2ee12fc79070b869d41abd.zip | |
Attach format attributes to declarations of various message-formatting
routines under gcc. In a couple of routines, hard-code the preference
for using the vsnprintf paths instead of list-of-int-arguments hacks
now that we're assuming vsnprintf is available in other places.
Installed headers affected:
com_err.h (com_err, com_err_va)
ss.h (ss_error)
krb5.h (krb5_set_error_message, krb5_vset_error_message)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@19653 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/kadm5/logger.c | 35 | ||||
| -rw-r--r-- | src/lib/krb4/krb4int.h | 8 |
2 files changed, 23 insertions, 20 deletions
diff --git a/src/lib/kadm5/logger.c b/src/lib/kadm5/logger.c index e6fe44da6..86abf48e9 100644 --- a/src/lib/kadm5/logger.c +++ b/src/lib/kadm5/logger.c @@ -1,7 +1,7 @@ /* * lib/kadm/logger.c * - * Copyright 1995 by the Massachusetts Institute of Technology. + * Copyright 1995, 2007 by the Massachusetts Institute of Technology. * All Rights Reserved. * * Export of this software from the United States of America may @@ -168,6 +168,14 @@ static struct log_entry def_log_entry; * profile. */ static krb5_context err_context; + +static void +klog_com_err_proc(const char *whoami, long int code, const char *format, va_list ap) +#if !defined(__cplusplus) && (__GNUC__ > 2) + __attribute__((__format__(__printf__, 3, 0))) +#endif + ; + static void klog_com_err_proc(const char *whoami, long int code, const char *format, va_list ap) { @@ -257,16 +265,8 @@ klog_com_err_proc(const char *whoami, long int code, const char *format, va_list #endif /* HAVE_SYSLOG */ /* Now format the actual message */ -#if HAVE_VSNPRINTF vsnprintf(cp, sizeof(outbuf) - (cp - outbuf), actual_format, ap); -#elif HAVE_VSPRINTF - vsprintf(cp, actual_format, ap); -#else /* HAVE_VSPRINTF */ - sprintf(cp, actual_format, ((int *) ap)[0], ((int *) ap)[1], - ((int *) ap)[2], ((int *) ap)[3], - ((int *) ap)[4], ((int *) ap)[5]); -#endif /* HAVE_VSPRINTF */ - + /* * Now that we have the message formatted, perform the output to each * logging specification. @@ -796,6 +796,13 @@ severity2string(int severity) */ static int klog_vsyslog(int priority, const char *format, va_list arglist) +#if !defined(__cplusplus) && (__GNUC__ > 2) + __attribute__((__format__(__printf__, 2, 0))) +#endif + ; + +static int +klog_vsyslog(int priority, const char *format, va_list arglist) { char outbuf[KRB5_KLOG_MAX_ERRMSG_SIZE]; int lindex; @@ -848,15 +855,7 @@ klog_vsyslog(int priority, const char *format, va_list arglist) syslogp = &outbuf[strlen(outbuf)]; /* Now format the actual message */ -#ifdef HAVE_VSNPRINTF vsnprintf(syslogp, sizeof(outbuf) - (syslogp - outbuf), format, arglist); -#elif HAVE_VSPRINTF - vsprintf(syslogp, format, arglist); -#else /* HAVE_VSPRINTF */ - sprintf(syslogp, format, ((int *) arglist)[0], ((int *) arglist)[1], - ((int *) arglist)[2], ((int *) arglist)[3], - ((int *) arglist)[4], ((int *) arglist)[5]); -#endif /* HAVE_VSPRINTF */ /* * If the user did not use krb5_klog_init() instead of dropping diff --git a/src/lib/krb4/krb4int.h b/src/lib/krb4/krb4int.h index 15ea14564..51b1138c9 100644 --- a/src/lib/krb4/krb4int.h +++ b/src/lib/krb4/krb4int.h @@ -1,7 +1,7 @@ /* * lib/krb4/krb4int.h * - * Copyright 2001-2002 by the Massachusetts Institute of Technology. + * Copyright 2001-2002, 2007 by the Massachusetts Institute of Technology. * All Rights Reserved. * * Export of this software from the United States of America may @@ -62,7 +62,11 @@ int krb_get_in_tkt_preauth_creds(char *, char *, char *, void kset_logfile(char *); /* log.c */ -void krb_log(const char *, ...); +void krb_log(const char *, ...) +#if !defined(__cplusplus) && (__GNUC__ > 2) + __attribute__((__format__(__printf__, 1, 2))) +#endif + ; void krb_set_logfile(char *); |
