From 29c21e490099c35fb3e35c2c493b6b480b211e72 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 30 Jul 2005 06:00:43 +0000 Subject: * misc/bits/syslog.h: New file. * misc/sys/syslog.h: Include for fortification. * misc/Makefile (headers): Add bits/syslog.h. * include/sys/syslog.h: Add __vsyslog_chk prototype and hidden_proto. * sysdeps/generic/syslog.c: Change vsyslog function to __vsyslog_chk. Call __vfprintf_chk if necessary. Make vsyslog a wrapper. Add __syslog_chk. * misc/Versions: Export __syslog_chk and __vsyslog_chk. * nis/nis_xdr.c: Help gcc to avoid generating unnecessary wrapper functions. --- sysdeps/generic/syslog.c | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) (limited to 'sysdeps/generic') diff --git a/sysdeps/generic/syslog.c b/sysdeps/generic/syslog.c index 9c8f422aad..9c5597f5aa 100644 --- a/sysdeps/generic/syslog.c +++ b/sysdeps/generic/syslog.c @@ -108,32 +108,28 @@ cancel_handler (void *ptr) * print message on log file; output is intended for syslogd(8). */ void -#if __STDC__ syslog(int pri, const char *fmt, ...) -#else -syslog(pri, fmt, va_alist) - int pri; - char *fmt; - va_dcl -#endif { va_list ap; -#if __STDC__ va_start(ap, fmt); -#else - va_start(ap); -#endif - vsyslog(pri, fmt, ap); + __vsyslog_chk(pri, -1, fmt, ap); va_end(ap); } libc_hidden_def (syslog) void -vsyslog(pri, fmt, ap) - int pri; - register const char *fmt; +__syslog_chk(int pri, int flag, const char *fmt, ...) +{ va_list ap; + + va_start(ap, fmt); + __vsyslog_chk(pri, flag, fmt, ap); + va_end(ap); +} + +void +__vsyslog_chk(int pri, int flag, const char *fmt, va_list ap) { struct tm now_tm; time_t now; @@ -218,7 +214,10 @@ vsyslog(pri, fmt, ap) /* We have the header. Print the user's format into the buffer. */ - vfprintf (f, fmt, ap); + if (flag == -1) + vfprintf (f, fmt, ap); + else + __vfprintf_chk (f, flag, fmt, ap); /* Close the memory stream; this will finalize the data into a malloc'd buffer in BUF. */ @@ -315,6 +314,16 @@ vsyslog(pri, fmt, ap) if (buf != failbuf) free (buf); } +libc_hidden_def (__vsyslog_chk) + +void +vsyslog(pri, fmt, ap) + int pri; + register const char *fmt; + va_list ap; +{ + __vsyslog_chk (pri, -1, fmt, ap); +} libc_hidden_def (vsyslog) static struct sockaddr SyslogAddr; /* AF_UNIX address of local logger */ -- cgit 1.4.1