[SV 49116] Check potential null pointer dereference.

* w32/subproc/sub_proc.c (make_command_line): Simplify cygwin shell
check for correctness.
This commit is contained in:
Paul Smith 2016-12-18 10:22:43 -05:00
parent 9c487cc537
commit 3d7c17c5a9

View file

@ -1195,7 +1195,7 @@ process_cleanup(
* *
* Returns: the buffer or NULL for failure * Returns: the buffer or NULL for failure
* Shell case: sh_name a:/full/path/to/script argv[1] argv[2] ... * Shell case: sh_name a:/full/path/to/script argv[1] argv[2] ...
* Otherwise: argv[0] argv[1] argv[2] ... * Otherwise: argv[0] argv[1] argv[2] ...
* *
* Notes/Dependencies: * Notes/Dependencies:
* CreateProcess does not take an argv, so this command creates a * CreateProcess does not take an argv, so this command creates a
@ -1212,15 +1212,15 @@ make_command_line( char *shell_name, char *full_exec_path, char **argv)
unsigned int bytes_required = 0; unsigned int bytes_required = 0;
char* command_line; char* command_line;
char* command_line_i; char* command_line_i;
int cygwin_mode = 0; /* HAVE_CYGWIN_SHELL */
int have_sh = 0; /* HAVE_CYGWIN_SHELL */ int have_sh = 0; /* HAVE_CYGWIN_SHELL */
int cygwin_mode = 0; /* HAVE_CYGWIN_SHELL */
#ifdef HAVE_CYGWIN_SHELL #ifdef HAVE_CYGWIN_SHELL
have_sh = (shell_name != NULL || strstr(full_exec_path, "sh.exe"));
cygwin_mode = 1; cygwin_mode = 1;
#endif #endif
if (shell_name && full_exec_path) { if (shell_name && full_exec_path) {
have_sh = cygwin_mode && strstr(full_exec_path, "sh.exe");
bytes_required bytes_required
= strlen(shell_name) + 1 + strlen(full_exec_path); = strlen(shell_name) + 1 + strlen(full_exec_path);
/* /*