Date: Sun, 09 Feb 2003 09:36:00 -0700 (MST) From: "M. Warner Losh" <imp@bsdimp.com> To: bright@mu.org Cc: current@FreeBSD.ORG Subject: Re: syslog bug Message-ID: <20030209.093600.122405559.imp@bsdimp.com> In-Reply-To: <20030208210824.GK88781@elvis.mu.org> References: <20030208210824.GK88781@elvis.mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20030208210824.GK88781@elvis.mu.org> Alfred Perlstein <bright@mu.org> writes: : syslog(3) botches things if you pass it a string that has "%%m" in it. : this should fix it, any comments? : : Index: syslog.c : =================================================================== : RCS file: /home/ncvs/src/lib/libc/gen/syslog.c,v : retrieving revision 1.28 : diff -u -r1.28 syslog.c : --- syslog.c 14 Nov 2002 12:40:14 -0000 1.28 : +++ syslog.c 8 Feb 2003 21:08:09 -0000 : @@ -190,12 +190,18 @@ : } : : /* Substitute error message for %m. */ : - for ( ; (ch = *fmt); ++fmt) : + for ( ; (ch = *fmt); ++fmt) { : if (ch == '%' && fmt[1] == 'm') { : ++fmt; : fputs(strerror(saved_errno), fmt_fp); : - } else : + } else if (ch == '%' && fmt[1] == '%') { : + ++fmt; : + fputc(ch, fmt_fp); : + fputc(ch, fmt_fp); : + } else { : fputc(ch, fmt_fp); : + } : + } : : /* Null terminate if room */ : fputc(0, fmt_fp); : With the above fix, "fred %%m" will produce 'fred %%ERRNO-ERROR-MESSAGE' would it not? Isn't there one too many fputc(ch, fmt_fp) in the case where you detect %%? + ++fmt; + fputc(ch, fmt_fp); instead in the '%%' if statement. This would print only one '%' ala printf. Warner To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030209.093600.122405559.imp>