qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 3/3] w32: Fix format string regression


From: Blue Swirl
Subject: Re: [Qemu-devel] [PATCH 3/3] w32: Fix format string regression
Date: Sun, 17 Jul 2011 12:03:12 +0300

On Fri, Jul 15, 2011 at 11:42 PM, Andreas Färber <address@hidden> wrote:
> Am 15.07.2011 um 21:38 schrieb Stefan Weil:
>
>> Commit 953ffe0f935f40c0d6061d69e76e0339393b54f8
>> introduced FMT_pid which is wrong for w32 and w64 getpid():
>> those getpid() implementations always return an int value.

This is not in line with Posix:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/getpid.html#tag_16_243

> Where is __int64 FMT_pid used then if not for the returned pid?

For shutdown_pid which is pid_t:
src/qemu/vl.c:1200:            fprintf(stderr, " from pid " FMT_pid
"\n", shutdown_pid);

> Andreas
>
>>
>> Signed-off-by: Stefan Weil <address@hidden>
>> ---
>> os-win32.c |    2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/os-win32.c b/os-win32.c
>> index b6652af..e153058 100644
>> --- a/os-win32.c
>> +++ b/os-win32.c
>> @@ -258,7 +258,7 @@ int qemu_create_pidfile(const char *filename)
>>    if (file == INVALID_HANDLE_VALUE) {
>>        return -1;
>>    }
>> -    len = snprintf(buffer, sizeof(buffer), FMT_pid "\n", getpid());
>> +    len = snprintf(buffer, sizeof(buffer), "%d\n", getpid());

Another way would be to cast the result of getpid to pid_t. Then if
the buggy getpid() implementations are fixed one day, there will be no
truncation.

>>    ret = WriteFileEx(file, (LPCVOID)buffer, (DWORD)len,
>>                      &overlap, NULL);
>>    if (ret == 0) {
>> --
>> 1.7.2.5
>>
>>
>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]