ecore-x: add safety checks for _ecore_x_disp in some 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 <cpmichael@osg.samsung.com>
This commit is contained in:
Chris Michael 2016-02-23 08:39:09 -05:00
parent 861a0b6d55
commit da0b4d4850
2 changed files with 33 additions and 2 deletions

View File

@ -110,6 +110,9 @@ ecore_x_event_mask_set(Ecore_X_Window w,
XSetWindowAttributes s_attr;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
if (!w)
w = DefaultRootWindow(_ecore_x_disp);
@ -129,6 +132,9 @@ ecore_x_event_mask_unset(Ecore_X_Window w,
XSetWindowAttributes s_attr;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
if (!w)
w = DefaultRootWindow(_ecore_x_disp);

View File

@ -20,6 +20,9 @@ _ecore_x_fixes_init(void)
_fixes_minor = 0;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
if (XFixesQueryVersion(_ecore_x_disp, &_fixes_major, &_fixes_minor))
{
_fixes_available = 1;
@ -89,6 +92,8 @@ _ecore_x_rectangle_x_to_ecore(XRectangle *xrect,
EAPI Eina_Bool
ecore_x_fixes_selection_notification_request(Ecore_X_Atom selection)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, EINA_FALSE);
#ifdef ECORE_XFIXES
if (_fixes_available)
{
@ -108,6 +113,8 @@ EAPI Ecore_X_Region
ecore_x_region_new(Ecore_X_Rectangle *rects,
int num)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, 0);
#ifdef ECORE_XFIXES
Ecore_X_Region region;
XRectangle *xrect;
@ -125,6 +132,7 @@ ecore_x_region_new(Ecore_X_Rectangle *rects,
EAPI Ecore_X_Region
ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, 0);
#ifdef ECORE_XFIXES
Ecore_X_Region region;
@ -141,6 +149,7 @@ EAPI Ecore_X_Region
ecore_x_region_new_from_window(Ecore_X_Window win,
Ecore_X_Region_Type type)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, 0);
#ifdef ECORE_XFIXES
Ecore_X_Region region;
@ -156,6 +165,7 @@ ecore_x_region_new_from_window(Ecore_X_Window win,
EAPI Ecore_X_Region
ecore_x_region_new_from_gc(Ecore_X_GC gc)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, 0);
#ifdef ECORE_XFIXES
Ecore_X_Region region;
@ -171,6 +181,7 @@ ecore_x_region_new_from_gc(Ecore_X_GC gc)
EAPI Ecore_X_Region
ecore_x_region_new_from_picture(Ecore_X_Picture picture)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, 0);
#ifdef ECORE_XFIXES
Ecore_X_Region region;
@ -186,6 +197,7 @@ ecore_x_region_new_from_picture(Ecore_X_Picture picture)
EAPI void
ecore_x_region_free(Ecore_X_Region region)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFixesDestroyRegion(_ecore_x_disp, region);
@ -197,6 +209,7 @@ ecore_x_region_set(Ecore_X_Region region,
Ecore_X_Rectangle *rects,
int num)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
XRectangle *xrect = _ecore_x_rectangle_ecore_to_x(rects, num);
LOGFN(__FILE__, __LINE__, __FUNCTION__);
@ -209,6 +222,7 @@ EAPI void
ecore_x_region_copy(Ecore_X_Region dest,
Ecore_X_Region source)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFixesCopyRegion(_ecore_x_disp, dest, source);
@ -221,6 +235,7 @@ ecore_x_region_combine(Ecore_X_Region dest,
Ecore_X_Region source1,
Ecore_X_Region source2)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFixesUnionRegion(_ecore_x_disp, dest, source1, source2);
@ -233,6 +248,7 @@ ecore_x_region_intersect(Ecore_X_Region dest,
Ecore_X_Region source1,
Ecore_X_Region source2)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFixesIntersectRegion(_ecore_x_disp, dest, source1, source2);
@ -245,6 +261,7 @@ ecore_x_region_subtract(Ecore_X_Region dest,
Ecore_X_Region source1,
Ecore_X_Region source2)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFixesSubtractRegion(_ecore_x_disp, dest, source1, source2);
@ -257,6 +274,7 @@ ecore_x_region_invert(Ecore_X_Region dest,
Ecore_X_Rectangle *bounds,
Ecore_X_Region source)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
XRectangle *xbound;
int num = 1;
@ -275,6 +293,7 @@ ecore_x_region_translate(Ecore_X_Region region,
int dx,
int dy)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFixesTranslateRegion(_ecore_x_disp, region, dx, dy);
@ -286,6 +305,7 @@ EAPI void
ecore_x_region_extents(Ecore_X_Region dest,
Ecore_X_Region source)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFixesRegionExtents(_ecore_x_disp, dest, source);
@ -296,7 +316,9 @@ ecore_x_region_extents(Ecore_X_Region dest,
EAPI Ecore_X_Rectangle *
ecore_x_region_fetch(Ecore_X_Region region,
int *num,
Ecore_X_Rectangle *bounds){
Ecore_X_Rectangle *bounds)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(_ecore_x_disp, NULL);
#ifdef ECORE_XFIXES
Ecore_X_Rectangle *rects;
XRectangle *xrect, xbound;
@ -324,6 +346,7 @@ ecore_x_region_expand(Ecore_X_Region dest,
unsigned int top,
unsigned int bottom)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFixesExpandRegion(_ecore_x_disp, dest, source, left, right, top, bottom);
@ -337,6 +360,7 @@ ecore_x_region_gc_clip_set(Ecore_X_Region region,
int x_origin,
int y_origin)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFixesSetGCClipRegion(_ecore_x_disp, gc, x_origin, y_origin, region);
@ -351,6 +375,7 @@ ecore_x_region_window_shape_set(Ecore_X_Region region,
int x_offset,
int y_offset)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFixesSetWindowShapeRegion(_ecore_x_disp,
@ -369,6 +394,7 @@ ecore_x_region_picture_clip_set(Ecore_X_Region region,
int x_origin,
int y_origin)
{
EINA_SAFETY_ON_NULL_RETURN(_ecore_x_disp);
#ifdef ECORE_XFIXES
LOGFN(__FILE__, __LINE__, __FUNCTION__);
XFixesSetPictureClipRegion(_ecore_x_disp,
@ -379,4 +405,3 @@ ecore_x_region_picture_clip_set(Ecore_X_Region region,
if (_ecore_xlib_sync) ecore_x_sync();
#endif /* ifdef ECORE_XFIXES */
}