From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:37220) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SS3bN-0007NL-5M for qemu-devel@nongnu.org; Wed, 09 May 2012 05:54:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SS3bD-0007Ij-LU for qemu-devel@nongnu.org; Wed, 09 May 2012 05:54:32 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53126) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SS3bD-0007G3-Dm for qemu-devel@nongnu.org; Wed, 09 May 2012 05:54:23 -0400 Message-ID: <4FAA3ECA.4010901@redhat.com> Date: Wed, 09 May 2012 11:54:18 +0200 From: Kevin Wolf MIME-Version: 1.0 References: <1336555446-20180-1-git-send-email-jim@meyering.net> <1336555446-20180-4-git-send-email-jim@meyering.net> In-Reply-To: <1336555446-20180-4-git-send-email-jim@meyering.net> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 03/22] vmdk: relative_path: avoid buffer overrun List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jim Meyering Cc: Jim Meyering , qemu-devel@nongnu.org Am 09.05.2012 11:23, schrieb Jim Meyering: > From: Jim Meyering > > strncpy does not guarantee NUL-termination. > Setting dest[n-1] = '\0' *before* calling strncpy(dest, src, n-1) > is a no-op. Use pstrcpy to ensure NUL-termination, not strncpy. It's not, it would only be a no-op before strncpy(dest, src, n). But pstrcpy() is definitely nicer. > Signed-off-by: Jim Meyering > --- > block/vmdk.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/block/vmdk.c b/block/vmdk.c > index 18e9b4c..045e279 100644 > --- a/block/vmdk.c > +++ b/block/vmdk.c > @@ -1319,8 +1319,7 @@ static int relative_path(char *dest, int dest_size, > return -1; > } > if (path_is_absolute(target)) { > - dest[dest_size - 1] = '\0'; > - strncpy(dest, target, dest_size - 1); > + pstrcpy(dest, dest_size - 1, target); I think you mean pstrcpy(dest, dest_size, target). > return 0; > } > while (base[i] == target[i]) { Kevin