shell32: Don't parse command line if numargs is NULL in CommandLineToArgvW.
This commit is contained in:
parent
698afdca98
commit
f621f8ea78
|
@ -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,8 +119,7 @@ LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int* numargs)
|
|||
LocalFree( argv );
|
||||
}
|
||||
argv[0]=(LPWSTR)(argv+1);
|
||||
if (numargs)
|
||||
*numargs=1;
|
||||
*numargs=1;
|
||||
|
||||
return argv;
|
||||
}
|
||||
|
@ -228,8 +233,7 @@ LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR lpCmdline, int* numargs)
|
|||
*d='\0';
|
||||
argv[argc++]=arg;
|
||||
}
|
||||
if (numargs)
|
||||
*numargs=argc;
|
||||
*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);
|
||||
|
|
Loading…
Reference in New Issue