Commit f621f8ea authored by Bruno Jesus's avatar Bruno Jesus Committed by Alexandre Julliard

shell32: Don't parse command line if numargs is NULL in CommandLineToArgvW.

parent 698afdca
......@@ -92,6 +92,12 @@ LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int* numargs)
LPWSTR cmdline;
int in_quotes,bcount;
if(!numargs)
{
SetLastError(ERROR_INVALID_PARAMETER);
return NULL;
}
if (*lpCmdline==0)
{
/* Return the path to the executable */
......@@ -113,7 +119,6 @@ LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int* numargs)
LocalFree( argv );
}
argv[0]=(LPWSTR)(argv+1);
if (numargs)
*numargs=1;
return argv;
......@@ -228,7 +233,6 @@ LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int* numargs)
*d='\0';
argv[argc++]=arg;
}
if (numargs)
*numargs=argc;
return argv;
......
......@@ -2157,6 +2157,7 @@ static void test_commandline(void)
LPWSTR *args = (LPWSTR*)0xdeadcafe, pbuf;
INT numargs = -1;
size_t buflen;
DWORD lerror;
wsprintfW(cmdline,fmt1,one,two,three,four);
args=CommandLineToArgvW(cmdline,&numargs);
......@@ -2171,6 +2172,15 @@ static void test_commandline(void)
ok(lstrcmpW(args[2],three)==0,"arg2 is not as expected\n");
ok(lstrcmpW(args[3],four)==0,"arg3 is not as expected\n");
SetLastError(0xdeadbeef);
args=CommandLineToArgvW(cmdline,NULL);
lerror=GetLastError();
ok(args == NULL && lerror == ERROR_INVALID_PARAMETER, "expected NULL with ERROR_INVALID_PARAMETER got %p with %d\n",args,lerror);
SetLastError(0xdeadbeef);
args=CommandLineToArgvW(NULL,NULL);
lerror=GetLastError();
ok(args == NULL && lerror == ERROR_INVALID_PARAMETER, "expected NULL with ERROR_INVALID_PARAMETER got %p with %d\n",args,lerror);
wsprintfW(cmdline,fmt2,one,two,three,four);
args=CommandLineToArgvW(cmdline,&numargs);
ok(numargs == 5, "expected 5 args, got %i\n",numargs);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment