git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [msysGit] [PATCH v3 02/14] mingw: implement syslog

From
Erik Faye-Lund <kusmabite@gmail.com>
Date
Oct 10, 2010, 21:17 UTC
Message-ID
<AANLkTimSxk=b=cHSvvnVejy=smwTmGboqya0cW+6YOrF@mail.gmail.com>
In-Reply-To
<201010102251.27095.j6t@kdbg.org>
On Sun, Oct 10, 2010 at 10:51 PM, Johannes Sixt <j6t@kdbg.org> wrote:
Show 21 quoted lines
> On Sonntag, 10. Oktober 2010, Erik Faye-Lund wrote:
>> On Sun, Oct 10, 2010 at 9:50 PM, Eric Sunshine <ericsunshine@gmail.com>
> wrote:
>> > On 10/10/2010 9:20 AM, Erik Faye-Lund wrote:
>> >> +       /*
>> >> +        * ReportEvent() doesn't handle strings containing %n, where n
>> >> is +        * an integer. Such events must be reformatted by the caller.
>> >> +        */
>> >
>> > The comment about '%n' seems to be warning about a potential problem but
>> > does not actually protect against it. Should this issue be handled?
>>
>> This is again an issue that was discussed in the first round.
>> ReportEvent() CANNOT report a string containing "%n" (where n is an
>> integer). And while we could probably try to work around it by
>> inserting a space or something, and I don't think we ever were able to
>> find a case where we could report a string containing "%n" in the
>> first place...
>
> I recall that it was mentioned that this could happen for IPv6 addresses?
>

Ah, that's right. Microsoft even mentions it in MSDN: "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. Because an IPv6 address can contain this character sequence, you cannot log an event message that contains an IPv6 address".

What should we do about it? Error out?

Strangely enough, reporting strings with "%1" works fine when I test it now. Perhaps this is dependent on the windows-version?

Yep, it is. On Vista 64 it seems to work, but on WinXP it does not. The string gets expanded into itself 100 times, and then there's apparently a recursion test.

Also, it is only %1 that does not report correctly on WinXP, probably because of a check against the wNumStrings-parameter. Even strings like %11 does not expand.

FormatMessage has the FORMAT_MESSAGE_IGNORE_INSERTS-flag to avoid this kind of expansion, but unfortunately I can't find similar functionality for ReportEvent :(

Previous: Johannes SixtNext: Eric Sunshine
Message 10 of 43 in “daemon-win32”
  1. 00/14 daemon-win32Erik Faye-Lund, Oct 10, 2010
  2. 01/14 mingw: add network-wrappers for daemonErik Faye-Lund, Oct 10, 2010
  3. Eric SunshineOct 10, 2010
  4. Erik Faye-LundOct 10, 2010
  5. Eric SunshineOct 10, 2010
  6. 02/14 mingw: implement syslogErik Faye-Lund, Oct 10, 2010
  7. Eric SunshineOct 10, 2010
  8. Erik Faye-LundOct 10, 2010
  9. Johannes SixtOct 10, 2010
  10. Erik Faye-LundOct 10, 2010
  11. Eric SunshineOct 10, 2010
  12. Erik Faye-LundOct 10, 2010
  13. Erik Faye-LundOct 10, 2010
  14. Eric SunshineOct 10, 2010
  15. Erik Faye-LundOct 11, 2010
  16. Erik Faye-LundOct 11, 2010
  17. 03/14 compat: add inet_pton and inet_ntop prototypesErik Faye-Lund, Oct 10, 2010
  18. 04/14 inet_ntop: fix a couple of old-style declsErik Faye-Lund, Oct 10, 2010
  19. 05/14 mingw: use real pidErik Faye-Lund, Oct 10, 2010
  20. Eric SunshineOct 10, 2010
  21. Erik Faye-LundOct 10, 2010
  22. Eric SunshineOct 10, 2010
  23. 06/14 mingw: support waitpid with pid > 0 and WNOHANGErik Faye-Lund, Oct 10, 2010
  24. 07/14 mingw: add kill emulationErik Faye-Lund, Oct 10, 2010
  25. 08/14 daemon: use run-command api for async servingErik Faye-Lund, Oct 10, 2010
  26. Eric SunshineOct 10, 2010
  27. Erik Faye-LundOct 10, 2010
  28. 09/14 daemon: use full buffered mode for stderrErik Faye-Lund, Oct 10, 2010
  29. 10/14 Improve the mingw getaddrinfo stub to handle more use casesErik Faye-Lund, Oct 10, 2010
  30. 11/14 daemon: report connection from root-processErik Faye-Lund, Oct 10, 2010
  31. Johannes SixtOct 10, 2010
  32. Erik Faye-LundOct 10, 2010
  33. Erik Faye-LundOct 10, 2010
  34. Ævar Arnfjörð BjarmasonOct 10, 2010
  35. Erik Faye-LundOct 10, 2010
  36. 12/14 mingw: import poll-emulation from gnulibErik Faye-Lund, Oct 10, 2010
  37. Ævar Arnfjörð BjarmasonOct 10, 2010
  38. Erik Faye-LundOct 10, 2010
  39. Erik Faye-LundOct 10, 2010
  40. Ævar Arnfjörð BjarmasonOct 10, 2010
  41. 13/14 mingw: use poll-emulation from gnulibErik Faye-Lund, Oct 10, 2010
  42. 14/14 daemon: only use posix features on posix systemsErik Faye-Lund, Oct 10, 2010
  43. Ævar Arnfjörð BjarmasonOct 10, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.