Fix possible NULL access Signed-off-by: walter harms <wha...@bfs.de> --- src/Resources.c | 3 +++ src/TMparse.c | 18 ++++++++++++++---- src/TMstate.c | 11 +++++++---- 3 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/src/Resources.c b/src/Resources.c index 1cb37d4..9230169 100644 --- a/src/Resources.c +++ b/src/Resources.c @@ -967,8 +967,11 @@ static XtCacheRef *GetResources( if (cache_ptr && *cache_ptr) cache_ptr++; } else { + // value.addr can be NULL see: !already_copied + if (value.addr) *((XtTranslations *)&widget->core.tm.current_state) = *((XtTranslations *)value.addr); + } } } diff --git a/src/TMparse.c b/src/TMparse.c index 5fddb82..5930187 100644 --- a/src/TMparse.c +++ b/src/TMparse.c @@ -1288,10 +1288,15 @@ static void RepeatDownPlus( *event = timerEventRec; } - + /* + if reps==0 -> lastDownEvent == NULL + */ event->next = lastDownEvent; *eventP = event; - *actionsP = &lastDownEvent->actions; + if (lastDownEvent) + *actionsP = &lastDownEvent->actions; + else + *actionsP = NULL ; } static void RepeatUp( @@ -1395,10 +1400,15 @@ static void RepeatUpPlus( *event = *downEvent; } - + /* + if reps==0 -> lastUpEvent == NULL + */ event->next = lastUpEvent; *eventP = event; - *actionsP = &lastUpEvent->actions; + if (lastUpEvent) + *actionsP = &lastUpEvent->actions; + else + *actionsP = NULL ; } static void RepeatOther( diff --git a/src/TMstate.c b/src/TMstate.c index 4a634b4..843292c 100644 --- a/src/TMstate.c +++ b/src/TMstate.c @@ -717,10 +717,13 @@ static void PushContext( XtRealloc((char *)context->matches, context->maxMatches * sizeof(MatchPairRec)); } - context->matches[context->numMatches].isCycleStart = newState->isCycleStart; - context->matches[context->numMatches].isCycleEnd = newState->isCycleEnd; - context->matches[context->numMatches].typeIndex = newState->typeIndex; - context->matches[context->numMatches++].modIndex = newState->modIndex; + if ( context->matches ) + { + context->matches[context->numMatches].isCycleStart = newState->isCycleStart; + context->matches[context->numMatches].isCycleEnd = newState->isCycleEnd; + context->matches[context->numMatches].typeIndex = newState->typeIndex; + context->matches[context->numMatches++].modIndex = newState->modIndex; + } *contextPtr = context; } UNLOCK_PROCESS; -- 1.6.0.2 _______________________________________________ xorg@lists.freedesktop.org: X.Org support Archives: http://lists.freedesktop.org/archives/xorg Info: http://lists.freedesktop.org/mailman/listinfo/xorg Your subscription address: arch...@mail-archive.com