git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Sixt <j6t@kdbg.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: "Marius Storm-Olsen" <mstormo@gmail.com>,
	Johannes.Schindelin@gmx.de, msysgit@googlegroups.com,
	git@vger.kernel.org, lznuaa@gmail.com
Subject: Re: [PATCH 03/14] Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++
Date: Fri, 21 Aug 2009 23:41:37 +0200	[thread overview]
Message-ID: <200908212341.37531.j6t@kdbg.org> (raw)
In-Reply-To: <7vr5v4dgz0.fsf@alter.siamese.dyndns.org>

On Freitag, 21. August 2009, Junio C Hamano wrote:
> Marius Storm-Olsen <mstormo@gmail.com> writes:
> > From: Frank Li <lznuaa@gmail.com>
> >
> > The Microsoft C runtime's vsnprintf function does not add NUL at
> > the end of the buffer.
>
> This contradicts the way I read the comment in compat/snprintf.c from
> f4626df (Add target architecture MinGW., 2007-12-01).
>
> As far as I can see, the correction is about the meaning of the size
> parameter to the function, namely, that a broken implementation may
> mistakenly think that it was told the maximum length of the meat of the
> string to write, and it is allowed to append a NUL beyond the limit, when
> the caller actually is telling it the size of the buffer.

Not quite. The parameter *is* the size of the buffer and vsnprintf does not 
write beyond the buffer. However, it has the awkward behavior that if the 
buffer is too short by exactly one byte, i.e. there is room for the complete 
string, but not for the terminating NUL, then vsnprintf does not report an 
error!

Therefore, we tell vsnprintf that the buffer is shorter by one byte and always 
write NUL in the last position so that we get a correctly terminated string 
even in this case.

-- Hannes

  parent reply	other threads:[~2009-08-21 21:44 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-21 13:30 [RFC/PATCH 00/14] Build git with MSVC Marius Storm-Olsen
2009-08-21 13:30 ` [PATCH 01/14] Fix non-constant array creation Marius Storm-Olsen
2009-08-21 13:30   ` [PATCH 02/14] Avoid declaration after statement Marius Storm-Olsen
2009-08-21 13:30     ` [PATCH 03/14] Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++ Marius Storm-Olsen
2009-08-21 13:30       ` [PATCH 04/14] Add define guards to compat/win32.h Marius Storm-Olsen
2009-08-21 13:30         ` [PATCH 05/14] Change regerror() declaration from K&R style to ANSI C (C89) Marius Storm-Olsen
2009-08-21 13:30           ` [PATCH 06/14] mingw.c: Use the O_BINARY flag to open files Marius Storm-Olsen
2009-08-21 13:30             ` [PATCH 07/14] Fix __stdcall/WINAPI placement and function prototype Marius Storm-Olsen
2009-08-21 13:30               ` [PATCH 08/14] Test for WIN32 instead of __MINGW32_ Marius Storm-Olsen
2009-08-21 13:30                 ` [PATCH 09/14] Avoid including windows.h in winansi.c for MSVC build Marius Storm-Olsen
2009-08-21 13:30                   ` [PATCH 10/14] Add empty header files for MSVC port Marius Storm-Olsen
2009-08-21 13:30                     ` [PATCH 11/14] Add MinGW header files to build git with MSVC Marius Storm-Olsen
2009-08-21 13:30                       ` [PATCH 12/14] Add platform files for MSVC porting Marius Storm-Olsen
2009-08-21 13:30                         ` [PATCH 13/14] Add MSVC project files Marius Storm-Olsen
2009-08-21 13:30                           ` [PATCH 14/14] Add README and gitignore file for MSVC build Marius Storm-Olsen
2009-08-23 16:26                             ` Thiago Farina
2009-08-23 18:22                               ` Reece Dunn
2009-08-23 18:59                                 ` Marius Storm-Olsen
2009-08-23 19:29                                   ` Thiago Farina
2009-08-24  7:03                                     ` [msysGit] " Marius Storm-Olsen
2009-08-25 14:32                                     ` Frank Li
2009-08-25 17:24                                       ` Thiago Farina
2009-08-27 13:16                                         ` Frank Li
2009-08-27 14:26                                           ` Thiago Farina
2009-09-07 12:26                                       ` Erik Faye-Lund
2009-08-21 21:02                   ` [PATCH 09/14] Avoid including windows.h in winansi.c " Junio C Hamano
2009-08-21 21:16                     ` Reece Dunn
2009-08-22 11:40                       ` Marius Storm-Olsen
2009-08-28  8:15                 ` [PATCH 08/14] Test for WIN32 instead of __MINGW32_ Paolo Bonzini
2009-08-21 17:37               ` [msysGit] [PATCH 07/14] Fix __stdcall/WINAPI placement and function prototype Johannes Sixt
2009-08-21 19:42                 ` Marius Storm-Olsen
2009-08-21 14:37           ` [PATCH 05/14] Change regerror() declaration from K&R style to ANSI C (C89) Frank Li
2009-08-21 20:10           ` [PATCH v2 05/14] Change regerror() definition " Marius Storm-Olsen
2009-08-22  0:15             ` Frank Li
2009-08-24  9:42             ` Erik Faye-Lund
2009-08-21 20:55       ` [PATCH 03/14] Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++ Junio C Hamano
2009-08-21 21:18         ` Johan 't Hart
2009-08-21 21:41         ` Johannes Sixt [this message]
2009-08-21 22:11           ` Junio C Hamano
2009-08-22 11:25             ` Marius Storm-Olsen
2009-08-22 11:32             ` Marius Storm-Olsen
2009-08-21 13:41   ` [PATCH 01/14] Fix non-constant array creation Erik Faye-Lund
2009-08-21 13:46     ` Marius Storm-Olsen
2009-08-21 16:26       ` [msysGit] " Janos Laube
2009-08-21 19:49         ` Marius Storm-Olsen
2009-08-21 20:06         ` Johan 't Hart
2009-08-22 10:35           ` Erik Faye-Lund
2009-08-21 21:04     ` Junio C Hamano
2009-08-21 20:39   ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200908212341.37531.j6t@kdbg.org \
    --to=j6t@kdbg.org \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=lznuaa@gmail.com \
    --cc=mstormo@gmail.com \
    --cc=msysgit@googlegroups.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).