launcher: SvcInstanceReplaceArguments

This commit is contained in:
Bill Zissimopoulos 2016-05-13 14:30:54 -07:00
parent c322a4b14a
commit 0822458238

View File

@ -85,6 +85,7 @@ static NTSTATUS SvcInstanceReplaceArguments(PWSTR String, ULONG Argc, PWSTR *Arg
PWSTR *PNewString) PWSTR *PNewString)
{ {
PWSTR NewString = 0, P, Q; PWSTR NewString = 0, P, Q;
PWSTR EmptyArg = L"";
ULONG Length; ULONG Length;
*PNewString = 0; *PNewString = 0;
@ -96,8 +97,13 @@ static NTSTATUS SvcInstanceReplaceArguments(PWSTR String, ULONG Argc, PWSTR *Arg
{ {
case L'%': case L'%':
P++; P++;
if (L'0' <= *P && *P <= '9' && Argc > (ULONG)(*P - L'0')) if (L'0' <= *P && *P <= '9')
Length += SvcInstanceArgumentLength(Argv[*P - L'0']); {
if (Argc > (ULONG)(*P - L'0'))
Length += SvcInstanceArgumentLength(Argv[*P - L'0']);
else
Length += SvcInstanceArgumentLength(EmptyArg);
}
else else
Length++; Length++;
break; break;
@ -117,8 +123,13 @@ static NTSTATUS SvcInstanceReplaceArguments(PWSTR String, ULONG Argc, PWSTR *Arg
{ {
case L'%': case L'%':
P++; P++;
if (L'0' <= *P && *P <= '9' && Argc > (ULONG)(*P - L'0')) if (L'0' <= *P && *P <= '9')
Q = SvcInstanceArgumentCopy(Q, Argv[*P - L'0']); {
if (Argc > (ULONG)(*P - L'0'))
Q = SvcInstanceArgumentCopy(Q, Argv[*P - L'0']);
else
Q = SvcInstanceArgumentCopy(Q, EmptyArg);
}
else else
*Q++ = *P; *Q++ = *P;
break; break;