Enlightenment CVS committal
Author : tsauerbeck
Project : e17
Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore
Modified Files:
ecore_signal.c
Log Message:
siginfo_t *si might be NULL, so don't deref it unconditionally
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore/ecore_signal.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- ecore_signal.c 4 Apr 2004 20:08:45 -0000 1.7
+++ ecore_signal.c 5 Apr 2004 16:32:53 -0000 1.8
@@ -167,7 +167,10 @@
}
e->pid = pid;
e->exe = _ecore_exe_find(pid);
- e->data = sigchld_info;
+
+ if (sigchld_info.si_signo)
+ e->data = sigchld_info;
+
_ecore_event_add(ECORE_EVENT_EXE_EXIT, e,
_ecore_event_exe_exit_free, NULL);
}
@@ -183,7 +186,10 @@
if (e)
{
e->number = 1;
- e->data = sigusr1_info;
+
+ if (sigusr1_info.si_signo)
+ e->data = sigusr1_info;
+
_ecore_event_add(ECORE_EVENT_SIGNAL_USER, e,
_ecore_event_signal_user_free, NULL);
}
@@ -198,7 +204,10 @@
if (e)
{
e->number = 2;
- e->data = sigusr2_info;
+
+ if (sigusr2_info.si_signo)
+ e->data = sigusr2_info;
+
_ecore_event_add(ECORE_EVENT_SIGNAL_USER, e,
_ecore_event_signal_user_free, NULL);
}
@@ -212,7 +221,9 @@
e = _ecore_event_signal_hup_new();
if (e)
{
- e->data = sighup_info;
+ if (sighup_info.si_signo)
+ e->data = sighup_info;
+
_ecore_event_add(ECORE_EVENT_SIGNAL_HUP, e,
_ecore_event_signal_hup_free, NULL);
}
@@ -227,7 +238,10 @@
if (e)
{
e->quit = 1;
- e->data = sigquit_info;
+
+ if (sigquit_info.si_signo)
+ e->data = sigquit_info;
+
_ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e,
_ecore_event_signal_exit_free, NULL);
}
@@ -242,7 +256,10 @@
if (e)
{
e->interrupt = 1;
- e->data = sigint_info;
+
+ if (sigint_info.si_signo)
+ e->data = sigint_info;
+
_ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e,
_ecore_event_signal_exit_free, NULL);
}
@@ -257,7 +274,10 @@
if (e)
{
e->terminate = 1;
- e->data = sigterm_info;
+
+ if (sigterm_info.si_signo)
+ e->data = sigterm_info;
+
_ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e,
_ecore_event_signal_exit_free, NULL);
}
@@ -272,7 +292,9 @@
e = _ecore_event_signal_power_new();
if (e)
{
- e->data = sigpwr_info;
+ if (sigpwr_info.si_signo)
+ e->data = sigpwr_info;
+
_ecore_event_add(ECORE_EVENT_SIGNAL_POWER, e,
_ecore_event_signal_power_free, NULL);
}
@@ -288,7 +310,10 @@
if ((e = _ecore_event_signal_realtime_new())) {
e->num = i;
- e->data = sigrt_info[i];
+
+ if (sigrt_info[i].si_signo)
+ e->data = sigrt_info[i];
+
_ecore_event_add(ECORE_EVENT_SIGNAL_REALTIME, e,
_ecore_event_signal_realtime_free, NULL);
}
@@ -318,7 +343,11 @@
static void
_ecore_signal_callback_sigchld(int sig, siginfo_t *si, void *foo)
{
- sigchld_info = *si;
+ if (si)
+ sigchld_info = *si;
+ else
+ sigchld_info.si_signo = 0;
+
sigchld_count++;
sig_count++;
}
@@ -326,7 +355,11 @@
static void
_ecore_signal_callback_sigusr1(int sig, siginfo_t *si, void *foo)
{
- sigusr1_info = *si;
+ if (si)
+ sigusr1_info = *si;
+ else
+ sigusr1_info.si_signo = 0;
+
sigusr1_count++;
sig_count++;
}
@@ -334,7 +367,11 @@
static void
_ecore_signal_callback_sigusr2(int sig, siginfo_t *si, void *foo)
{
- sigusr2_info = *si;
+ if (si)
+ sigusr2_info = *si;
+ else
+ sigusr2_info.si_signo = 0;
+
sigusr2_count++;
sig_count++;
}
@@ -342,7 +379,11 @@
static void
_ecore_signal_callback_sighup(int sig, siginfo_t *si, void *foo)
{
- sighup_info = *si;
+ if (si)
+ sighup_info = *si;
+ else
+ sighup_info.si_signo = 0;
+
sighup_count++;
sig_count++;
}
@@ -350,7 +391,11 @@
static void
_ecore_signal_callback_sigquit(int sig, siginfo_t *si, void *foo)
{
- sigquit_info = *si;
+ if (si)
+ sigquit_info = *si;
+ else
+ sigquit_info.si_signo = 0;
+
sigquit_count++;
sig_count++;
}
@@ -358,7 +403,11 @@
static void
_ecore_signal_callback_sigint(int sig, siginfo_t *si, void *foo)
{
- sigint_info = *si;
+ if (si)
+ sigint_info = *si;
+ else
+ sigint_info.si_signo = 0;
+
sigint_count++;
sig_count++;
}
@@ -366,7 +415,11 @@
static void
_ecore_signal_callback_sigterm(int sig, siginfo_t *si, void *foo)
{
- sigterm_info = *si;
+ if (si)
+ sigterm_info = *si;
+ else
+ sigterm_info.si_signo = 0;
+
sigterm_count++;
sig_count++;
}
@@ -375,7 +428,11 @@
static void
_ecore_signal_callback_sigpwr(int sig, siginfo_t *si, void *foo)
{
- sigpwr_info = *si;
+ if (si)
+ sigpwr_info = *si;
+ else
+ sigpwr_info.si_signo = 0;
+
sigpwr_count++;
sig_count++;
}
@@ -385,7 +442,11 @@
static void
_ecore_signal_callback_sigrt(int sig, siginfo_t *si, void *foo)
{
- sigrt_info[sig - SIGRTMIN] = *si;
+ if (si)
+ sigrt_info[sig - SIGRTMIN] = *si;
+ else
+ sigrt_info[sig - SIGRTMIN].si_signo = 0;
+
sigrt_count[sig - SIGRTMIN]++;
sig_count++;
}
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs