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

Reply via email to