devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=2be9bfc2a8f3e705bfc9132124f17b395c90232f

commit 2be9bfc2a8f3e705bfc9132124f17b395c90232f
Author: Chris Michael <cpmich...@osg.samsung.com>
Date:   Wed Feb 17 08:16:29 2016 -0500

    ecore-x: Add safety checks for NULL display in dpms functions
    
    xlib immediately crashes upon being passed a NULL display object,
    so every function in ecore-x should likely have safety checks such as these.
    
    @fix
    
    Signed-off-by: Chris Michael <cpmich...@osg.samsung.com>
---
 src/lib/ecore_x/xlib/ecore_x_dpms.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_x/xlib/ecore_x_dpms.c 
b/src/lib/ecore_x/xlib/ecore_x_dpms.c
index b3c3e38..a44825c 100644
--- a/src/lib/ecore_x/xlib/ecore_x_dpms.c
+++ b/src/lib/ecore_x/xlib/ecore_x_dpms.c
@@ -12,6 +12,8 @@ _ecore_x_dpms_init(void)
 #ifdef ECORE_XDPMS
    int _dpms_major, _dpms_minor;
 
+   EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
+
    _dpms_major = 1;
    _dpms_minor = 0;
 
@@ -53,6 +55,7 @@ ecore_x_dpms_capable_get(void)
 {
 #ifdef ECORE_XDPMS
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, EINA_FALSE);
    return DPMSCapable(_ecore_x_disp) ? EINA_TRUE : EINA_FALSE;
 #else /* ifdef ECORE_XDPMS */
    return EINA_FALSE;
@@ -72,6 +75,7 @@ ecore_x_dpms_enabled_get(void)
    unsigned short power_lvl;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, EINA_FALSE);
    DPMSInfo(_ecore_x_disp, &power_lvl, &state);
    return state ? EINA_TRUE : EINA_FALSE;
 #else /* ifdef ECORE_XDPMS */
@@ -96,6 +100,7 @@ ecore_x_dpms_power_level_get(void)
    unsigned short power_lvl;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, -1);
    DPMSInfo(_ecore_x_disp, &power_lvl, &state);
    return (int)power_lvl;
 #else
@@ -113,6 +118,7 @@ ecore_x_dpms_enabled_set(int enabled)
 {
 #ifdef ECORE_XDPMS
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
    if (enabled)
      DPMSEnable(_ecore_x_disp);
    else
@@ -135,6 +141,7 @@ ecore_x_dpms_timeouts_get(unsigned int *standby,
 {
 #ifdef ECORE_XDPMS
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
    DPMSGetTimeouts(_ecore_x_disp, (unsigned short *)standby,
                    (unsigned short *)suspend, (unsigned short *)off);
 #endif /* ifdef ECORE_XDPMS */
@@ -154,6 +161,7 @@ ecore_x_dpms_timeouts_set(unsigned int standby,
 {
 #ifdef ECORE_XDPMS
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, EINA_FALSE);
    return DPMSSetTimeouts(_ecore_x_disp, standby, suspend, off) ? EINA_TRUE : 
EINA_FALSE;
 #else /* ifdef ECORE_XDPMS */
    return EINA_FALSE;
@@ -172,6 +180,7 @@ ecore_x_dpms_timeout_standby_get(void)
    unsigned short standby, suspend, off;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, 0);
    DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
    return standby;
 #else /* ifdef ECORE_XDPMS */
@@ -192,6 +201,7 @@ ecore_x_dpms_timeout_suspend_get(void)
    unsigned short standby, suspend, off;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, 0);
    DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
    return suspend;
 #else /* ifdef ECORE_XDPMS */
@@ -212,6 +222,7 @@ ecore_x_dpms_timeout_off_get(void)
    unsigned short standby, suspend, off;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, 0);
    DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
    return off;
 #else /* ifdef ECORE_XDPMS */
@@ -231,6 +242,7 @@ ecore_x_dpms_timeout_standby_set(unsigned int new_timeout)
    unsigned short standby, suspend, off;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
    DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
    DPMSSetTimeouts(_ecore_x_disp, new_timeout, suspend, off);
 #endif /* ifdef ECORE_XDPMS */
@@ -248,6 +260,7 @@ ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout)
    unsigned short standby, suspend, off;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
    DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
    DPMSSetTimeouts(_ecore_x_disp, standby, new_timeout, off);
 #endif /* ifdef ECORE_XDPMS */
@@ -265,8 +278,8 @@ ecore_x_dpms_timeout_off_set(unsigned int new_timeout)
    unsigned short standby, suspend, off;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
+   EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
    DPMSGetTimeouts(_ecore_x_disp, &standby, &suspend, &off);
    DPMSSetTimeouts(_ecore_x_disp, standby, suspend, new_timeout);
 #endif /* ifdef ECORE_XDPMS */
 }
-

-- 


Reply via email to