From 8990b31214bcbc08090604147287455bfde91c11 Mon Sep 17 00:00:00 2001 From: Paulius Zaleckas Date: Mon, 18 Oct 2010 00:02:01 +0300 Subject: KDrive: Fix error handlig in tslib driver If ts_open() fails and return NULL, then next call to ts_fd() segfaults because of NULL dereference. There is no need to check output of ts_fd() as ts_open() did this internally. Signed-off-by: Paulius Zaleckas Reviewed-by: Daniel Stone Reviewed-by: Keith Packard Signed-off-by: Peter Hutterer --- hw/kdrive/linux/tslib.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'hw/kdrive') diff --git a/hw/kdrive/linux/tslib.c b/hw/kdrive/linux/tslib.c index 48a084220..570cbf99a 100644 --- a/hw/kdrive/linux/tslib.c +++ b/hw/kdrive/linux/tslib.c @@ -117,15 +117,22 @@ TslibEnable (KdPointerInfo *pi) pi->path = strdup("/dev/input/touchscreen0"); ErrorF("[tslib/TslibEnable] no device path given, trying %s\n", pi->path); } + private->tsDev = ts_open(pi->path, 0); - private->fd = ts_fd(private->tsDev); - if (!private->tsDev || ts_config(private->tsDev) || private->fd < 0) { + if (!private->tsDev) { ErrorF("[tslib/TslibEnable] failed to open %s\n", pi->path); - if (private->fd >= 0) - close(private->fd); return BadAlloc; } + if (ts_config(private->tsDev)) { + ErrorF("[tslib/TslibEnable] failed to load configuration\n"); + ts_close(private->tsDev); + private->tsDev = NULL; + return BadValue; + } + + private->fd = ts_fd(private->tsDev); + KdRegisterFd(private->fd, TsRead, pi); return Success; -- cgit v1.2.3 From 99275ad2fa99778afaefc54b62c8638afc59e755 Mon Sep 17 00:00:00 2001 From: Cyril Brulebois Date: Wed, 10 Nov 2010 16:06:10 +0100 Subject: Remove superfluous if(p!=NULL) checks around free(p); p=NULL; This patch has been generated by the following Coccinelle semantic patch: @@ expression E; @@ - if (E != NULL) { - free(E); ( - E = NULL; | - E = 0; ) - } + free(E); + E = NULL; Signed-off-by: Cyril Brulebois Reviewed-by: Mikhail Gusarov Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer --- dix/ptrveloc.c | 8 +++----- hw/kdrive/fake/fake.c | 7 ++----- hw/xwin/wincmap.c | 7 ++----- hw/xwin/winpixmap.c | 7 ++----- miext/rootless/rootlessWindow.c | 6 ++---- render/miindex.c | 14 ++++---------- render/picture.c | 7 ++----- xkb/XKBAlloc.c | 6 ++---- xkb/XKBGAlloc.c | 30 ++++++++++-------------------- xkb/XKBMAlloc.c | 34 ++++++++++++---------------------- 10 files changed, 41 insertions(+), 85 deletions(-) (limited to 'hw/kdrive') diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c index 30e14b17e..8f0332161 100644 --- a/dix/ptrveloc.c +++ b/dix/ptrveloc.c @@ -952,11 +952,9 @@ SetAccelerationProfile( if(profile == NULL && profile_num != PROFILE_UNINITIALIZE) return FALSE; - if(vel->profile_private != NULL){ - /* Here one could free old profile-private data */ - free(vel->profile_private); - vel->profile_private = NULL; - } + /* Here one could free old profile-private data */ + free(vel->profile_private); + vel->profile_private = NULL; /* Here one could init profile-private data */ vel->Profile = profile; vel->statistics.profile_number = profile_num; diff --git a/hw/kdrive/fake/fake.c b/hw/kdrive/fake/fake.c index b8306db0a..ba05234dc 100644 --- a/hw/kdrive/fake/fake.c +++ b/hw/kdrive/fake/fake.c @@ -215,11 +215,8 @@ fakeUnmapFramebuffer (KdScreenInfo *screen) { FakePriv *priv = screen->card->driver; KdShadowFbFree (screen); - if (priv->base) - { - free (priv->base); - priv->base = 0; - } + free(priv->base); + priv->base = NULL; return TRUE; } diff --git a/hw/xwin/wincmap.c b/hw/xwin/wincmap.c index 9da03888d..d526a9201 100644 --- a/hw/xwin/wincmap.c +++ b/hw/xwin/wincmap.c @@ -516,11 +516,8 @@ winGetPaletteDD (ScreenPtr pScreen, ColormapPtr pcmap) pScreen->blackPixel = 0; /* Free colormap */ - if (ppeColors != NULL) - { - free (ppeColors); - ppeColors = NULL; - } + free(ppeColors); + ppeColors = NULL; /* Free the DC */ if (hdc != NULL) diff --git a/hw/xwin/winpixmap.c b/hw/xwin/winpixmap.c index 050c71a7f..8bd8e3478 100644 --- a/hw/xwin/winpixmap.c +++ b/hw/xwin/winpixmap.c @@ -163,11 +163,8 @@ winDestroyPixmapNativeGDI (PixmapPtr pPixmap) if (pPixmapPriv->hBitmap) DeleteObject (pPixmapPriv->hBitmap); /* Free the bitmap info header memory */ - if (pPixmapPriv->pbmih != NULL) - { - free (pPixmapPriv->pbmih); - pPixmapPriv->pbmih = NULL; - } + free(pPixmapPriv->pbmih); + pPixmapPriv->pbmih = NULL; /* Free the pixmap memory */ free (pPixmap); diff --git a/miext/rootless/rootlessWindow.c b/miext/rootless/rootlessWindow.c index 42ab8dab2..c4a32aa0d 100644 --- a/miext/rootless/rootlessWindow.c +++ b/miext/rootless/rootlessWindow.c @@ -1140,10 +1140,8 @@ FinishFrameResize(WindowPtr pWin, Bool gravity, int oldX, int oldY, } } - if (gResizeDeathBits != NULL) { - free(gResizeDeathBits); - gResizeDeathBits = NULL; - } + free(gResizeDeathBits); + gResizeDeathBits = NULL; if (gravity) { pScreen->CopyWindow = gResizeOldCopyWindowProc; diff --git a/render/miindex.c b/render/miindex.c index 5e2e06c35..4603136a4 100644 --- a/render/miindex.c +++ b/render/miindex.c @@ -322,16 +322,10 @@ void miCloseIndexed (ScreenPtr pScreen, PictFormatPtr pFormat) { - if (pFormat->index.devPrivate) - { - free(pFormat->index.devPrivate); - pFormat->index.devPrivate = 0; - } - if (pFormat->index.pValues) - { - free(pFormat->index.pValues); - pFormat->index.pValues = 0; - } + free(pFormat->index.devPrivate); + pFormat->index.devPrivate = NULL; + free(pFormat->index.pValues); + pFormat->index.pValues = NULL; } void diff --git a/render/picture.c b/render/picture.c index 7fda6b93a..896eaa7be 100644 --- a/render/picture.c +++ b/render/picture.c @@ -1391,11 +1391,8 @@ SetPictureTransform (PicturePtr pPicture, } else { - if (pPicture->transform) - { - free(pPicture->transform); - pPicture->transform = 0; - } + free(pPicture->transform); + pPicture->transform = NULL; } pPicture->serialNumber |= GC_CHANGE_SERIAL_BIT; diff --git a/xkb/XKBAlloc.c b/xkb/XKBAlloc.c index c52e091da..bffd60fce 100644 --- a/xkb/XKBAlloc.c +++ b/xkb/XKBAlloc.c @@ -212,10 +212,8 @@ XkbNamesPtr names; register XkbKeyTypePtr type; type= map->types; for (i=0;inum_types;i++,type++) { - if (type->level_names!=NULL) { - free(type->level_names); - type->level_names= NULL; - } + free(type->level_names); + type->level_names = NULL; } } } diff --git a/xkb/XKBGAlloc.c b/xkb/XKBGAlloc.c index d1adea34e..3ec9edab8 100644 --- a/xkb/XKBGAlloc.c +++ b/xkb/XKBGAlloc.c @@ -50,10 +50,8 @@ _XkbFreeGeomLeafElems( Bool freeAll, { if ((freeAll)||(*elems==NULL)) { *num_inout= *sz_inout= 0; - if (*elems!=NULL) { - free(*elems); - *elems= NULL; - } + free(*elems); + *elems = NULL; return; } @@ -373,22 +371,16 @@ XkbDoodadPtr doodad= (XkbDoodadPtr)doodad_in; switch (doodad->any.type) { case XkbTextDoodad: { - if (doodad->text.text!=NULL) { - free(doodad->text.text); - doodad->text.text= NULL; - } - if (doodad->text.font!=NULL) { - free(doodad->text.font); - doodad->text.font= NULL; - } + free(doodad->text.text); + doodad->text.text = NULL; + free(doodad->text.font); + doodad->text.font = NULL; } break; case XkbLogoDoodad: { - if (doodad->logo.logo_name!=NULL) { - free(doodad->logo.logo_name); - doodad->logo.logo_name= NULL; - } + free(doodad->logo.logo_name); + doodad->logo.logo_name = NULL; } break; } @@ -434,10 +426,8 @@ XkbFreeGeometry(XkbGeometryPtr geom,unsigned which,Bool freeMap) if ((which&XkbGeomKeyAliasesMask)&&(geom->key_aliases!=NULL)) XkbFreeGeomKeyAliases(geom,0,geom->num_key_aliases,TRUE); if (freeMap) { - if (geom->label_font!=NULL) { - free(geom->label_font); - geom->label_font= NULL; - } + free(geom->label_font); + geom->label_font = NULL; free(geom); } return; diff --git a/xkb/XKBMAlloc.c b/xkb/XKBMAlloc.c index 6b186c1ad..e85a8af95 100644 --- a/xkb/XKBMAlloc.c +++ b/xkb/XKBMAlloc.c @@ -321,9 +321,9 @@ KeyCode matchingKeys[XkbMaxKeyCount],nMatchingKeys; return BadAlloc; } } - else if (type->preserve!=NULL) { + else { free(type->preserve); - type->preserve= NULL; + type->preserve = NULL; } type->map_count= map_count; } @@ -807,19 +807,13 @@ XkbClientMapPtr map; register int i; XkbKeyTypePtr type; for (i=0,type=map->types;inum_types;i++,type++) { - if (type->map!=NULL) { - free(type->map); - type->map= NULL; - } - if (type->preserve!=NULL) { - free(type->preserve); - type->preserve= NULL; - } + free(type->map); + type->map = NULL; + free(type->preserve); + type->preserve = NULL; type->map_count= 0; - if (type->level_names!=NULL) { - free(type->level_names); - type->level_names= NULL; - } + free(type->level_names); + type->level_names = NULL; } } free(map->types); @@ -828,10 +822,8 @@ XkbClientMapPtr map; } } if (what&XkbKeySymsMask) { - if (map->key_sym_map!=NULL) { - free(map->key_sym_map); - map->key_sym_map= NULL; - } + free(map->key_sym_map); + map->key_sym_map = NULL; if (map->syms!=NULL) { free(map->syms); map->size_syms= map->num_syms= 0; @@ -864,10 +856,8 @@ XkbServerMapPtr map; map->explicit= NULL; } if (what&XkbKeyActionsMask) { - if (map->key_acts!=NULL) { - free(map->key_acts); - map->key_acts= NULL; - } + free(map->key_acts); + map->key_acts = NULL; if (map->acts!=NULL) { free(map->acts); map->num_acts= map->size_acts= 0; -- cgit v1.2.3