aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2012-07-02 19:48:33 +0000
committerChristopher Faylor <me@cgf.cx>2012-07-02 19:48:33 +0000
commitfb348d22afc85a2dfba80c3059391e8bc276e9ca (patch)
tree642176d17432f02e8a1110e7d7d7daeb7d9984f9
parente14a5a7efa4350fd75a0c8db65461d8d12a13b17 (diff)
downloadnewlib-fb348d22afc85a2dfba80c3059391e8bc276e9ca.zip
newlib-fb348d22afc85a2dfba80c3059391e8bc276e9ca.tar.gz
newlib-fb348d22afc85a2dfba80c3059391e8bc276e9ca.tar.bz2
* external.cc (fillout_pinfo): Return NULL rather than 0.
(exit_process): Guard against NULL pointer dereference found by Clang.
-rw-r--r--winsup/cygwin/ChangeLog9
-rw-r--r--winsup/cygwin/external.cc8
2 files changed, 12 insertions, 5 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 5ff6fab..611ba0d 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,12 +1,17 @@
2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+ * external.cc (fillout_pinfo): Return NULL rather than 0.
+ (exit_process): Guard against NULL pointer dereference found by Clang.
+
+2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
+
* mount.cc (mount_info::conv_to_win32_path): Eliminate unneeded
- assignment found by CLANG.
+ assignment found by Clang.
2012-07-02 Christopher Faylor <me.cygwin2012@cgf.cx>
* path.cc (symlink_info::check): Remove unneeded/unused variable found
- by CLANG.
+ by Clang.
2012-07-02 Corinna Vinschen <corinna@vinschen.de>
diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc
index cd86966..22636aa 100644
--- a/winsup/cygwin/external.cc
+++ b/winsup/cygwin/external.cc
@@ -108,7 +108,7 @@ fillout_pinfo (pid_t pid, int winpid)
{
i = 0;
pids.reset ();
- return 0;
+ return NULL;
}
return &ep;
}
@@ -186,10 +186,12 @@ static void
exit_process (UINT status, bool useTerminateProcess)
{
pid_t pid = getpid ();
- external_pinfo * ep = fillout_pinfo (pid, 1);
+ external_pinfo *ep = fillout_pinfo (pid, 1);
DWORD dwpid = ep ? ep->dwProcessId : pid;
pinfo p (pid, PID_MAP_RW);
- if ((dwpid == GetCurrentProcessId()) && (p->pid == ep->pid))
+ if (ep)
+ pid = ep->pid;
+ if ((dwpid == GetCurrentProcessId()) && (p->pid == pid))
p.set_exit_code ((DWORD)status);
if (useTerminateProcess)
TerminateProcess (GetCurrentProcess(), status);