Fix for spawning windows processes
Ralf Habacker
ralf.habacker at freenet.de
Thu Apr 29 02:36:38 PDT 2010
Fridrich Strba schrieb:
> Hello, Joerg,
>
> Nice to see you again :)
>
> Now, I really would then prefer something like:
>
> if (!strings || !string[0])
> return NULL;
>
> At least for my TrainedMonkey eyes it is a bit more readable. But,
> again, no religion, just preference.
>
> Attached is the new patch
>
Applying: Pass the environment to CreateProcessA correctly and be more
defensive
t:/svn-src/dbus-freedesktop-src-ssh/.git/rebase-apply/patch:14: trailing
whitespace.
compose_string (char **strings, char separator)
t:/svn-src/dbus-freedesktop-src-ssh/.git/rebase-apply/patch:24: trailing
whitespace.
if (!strings || !strings[0])
t:/svn-src/dbus-freedesktop-src-ssh/.git/rebase-apply/patch:25: trailing
whitespace.
return 0;
t:/svn-src/dbus-freedesktop-src-ssh/.git/rebase-apply/patch:26: trailing
whitespace.
for (i = 0; strings[i]; i++)
t:/svn-src/dbus-freedesktop-src-ssh/.git/rebase-apply/patch:27: trailing
whitespace.
n += strlen (strings[i]) + 1;
error: patch failed: dbus/dbus-spawn-win.c:471
error: dbus/dbus-spawn-win.c: patch does not apply
Patch failed at 0001 Pass the environment to CreateProcessA correctly
and be more defensive
still problems with this patch
Regards
Ralf
> Cheers
>
> Fridrich
>
> On Wed, 2010-04-28 at 14:01 +0200, Jörg Barfurth wrote:
>
>> Fridrich Strba schrieb:
>>
>>> I did it intentionally, but left it there because I wanted it to raise
>>> the question. If you have only teh argv[0] in your argv, why to leave
>>> the space after the name there?
>>>
>> But you have i==0 only, if there was no string at all in argv.
>>
>> The same issue still exists in your new patch. Now i==0 signifies that
>> strings is not NULL, but points at an empty string sequence (i.e.
>> strings[0] == NULL). So p still points at the start of the buffer.
>> Without the 'if(i)' check you'll write outside (before) the buffer in
>> that case.
>>
>>
>>> The windows documentation is saying
>>> "The system adds a terminating null character to the command-line string
>>> to separate the file name from the arguments. This divides the original
>>> string into two strings for internal processing."
>>> So, was wondering whether one if cannot be saved :)
>>>
>>>
>>> P.S.: If there is a good reason to do the previous thing, I am not
>>> having any religious opinion about that. Just was wondering :)
>>>
>>>
>> It was simply good defensive style. Now that you are making the method
>> more generic, so that you can rule out empty string lists even less, I
>> strongly suggest reintroducing it.
>>
>> Ciao
>>
>> - Jörg
>>
>>
>>
>>> On Wed, 2010-04-28 at 10:44 +0200, Ralf Habacker wrote:
>>>
>>>> Fridrich Strba schrieb:
>>>>
>>>>> Hello,
>>>>>
>>>>> This patch is fixing a bug in dbus/dbus-spawn-win.c
>>>>> Maybe the two (build_commandline and build_env_string) could share some
>>>>> code.
>>>>>
>>>>>
>>>>>
>>>> is the following fix intended ?
>>>>
>>>> @@ -492,20 +492,46 @@ build_commandline (char **argv)
>>>> p += strlen (argv[i]);
>>>> *(p++) = ' ';
>>>> }
>>>> - if (i)
>>>> +// if (i)
>>>> p--;
>>>> *p = '\0';
>>>>
>>>> return buf;
>>>> }
>>>>
>>>> regards
>>>> Ralf
>>>>
>>>>
>>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> dbus mailing list
> dbus at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dbus
More information about the dbus
mailing list