On Fri, Nov 27, 2009 at 8:23 PM, Johannes Sixt <j6t@xxxxxxxx> wrote: > On Freitag, 27. November 2009, Erik Faye-Lund wrote: >> On Thu, Nov 26, 2009 at 10:23 PM, Johannes Sixt <j6t@xxxxxxxx> wrote: >> > I would >> > >> > const char* arg; >> > if (strcmp(fmt, "%s")) >> > die("format string of syslog() not implemented") >> > va_start(va, fmt); >> > arg = va_arg(va, char*); >> > va_end(va); >> > >> > because we have exactly one invocation of syslog(), which passes "%s" as >> > format string. Then strbuf_vaddf is not needed. Or even simpler: declare >> > the function as >> > >> > void syslog(int priority, const char *fmt, const char*arg); >> >> After reading this again, I agree that this is the best solution. I'll >> update for the next iteration. > > Except that you shouldn't die like I proposed because here we are already in > the die_routine, no? > Might be. Either way, I think loosing a log-entry is better than taking down the server. I'm just doing a warning() and return. If we're lucky, the warning gets somewhere. If not, well, something happened and no one was around to see it. >> > "Note that the string that you log cannot contain %n, where n is an >> > integer value (for example, %1) because the event viewer treats it as an >> > insertion string. ..." >> > >> > How are the chances that this condition applies to our use of the >> > function? >> >> Ugh, increasingly high since we're adding IPv6 support, I guess. >> Perhaps some form of escaping needs to be done? > > I think so, but actually I have no clue. > Bah, according to Microsoft Support (1), there's no simple way to escape this. I'm tempted to leave this bug in, and rather try to fix the symptoms when/if they start popping up. Unless someone else comes up with something better, that is. (1) http://support.microsoft.com/kb/934640 -- Erik "kusma" Faye-Lund -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html