From 08224582384a73b05f85eec19867773e827a8099 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Fri, 13 May 2016 14:30:54 -0700 Subject: [PATCH] launcher: SvcInstanceReplaceArguments --- src/launcher/launcher.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/launcher/launcher.c b/src/launcher/launcher.c index 74aff660..f7f0edd8 100644 --- a/src/launcher/launcher.c +++ b/src/launcher/launcher.c @@ -85,6 +85,7 @@ static NTSTATUS SvcInstanceReplaceArguments(PWSTR String, ULONG Argc, PWSTR *Arg PWSTR *PNewString) { PWSTR NewString = 0, P, Q; + PWSTR EmptyArg = L""; ULONG Length; *PNewString = 0; @@ -96,8 +97,13 @@ static NTSTATUS SvcInstanceReplaceArguments(PWSTR String, ULONG Argc, PWSTR *Arg { case L'%': P++; - if (L'0' <= *P && *P <= '9' && Argc > (ULONG)(*P - L'0')) - Length += SvcInstanceArgumentLength(Argv[*P - L'0']); + if (L'0' <= *P && *P <= '9') + { + if (Argc > (ULONG)(*P - L'0')) + Length += SvcInstanceArgumentLength(Argv[*P - L'0']); + else + Length += SvcInstanceArgumentLength(EmptyArg); + } else Length++; break; @@ -117,8 +123,13 @@ static NTSTATUS SvcInstanceReplaceArguments(PWSTR String, ULONG Argc, PWSTR *Arg { case L'%': P++; - if (L'0' <= *P && *P <= '9' && Argc > (ULONG)(*P - L'0')) - Q = SvcInstanceArgumentCopy(Q, Argv[*P - L'0']); + if (L'0' <= *P && *P <= '9') + { + if (Argc > (ULONG)(*P - L'0')) + Q = SvcInstanceArgumentCopy(Q, Argv[*P - L'0']); + else + Q = SvcInstanceArgumentCopy(Q, EmptyArg); + } else *Q++ = *P; break;