IK plugin range check was wrong, could do out of bounds reads.

This commit is contained in:
Campbell Barton 2013-06-27 19:52:50 +00:00
parent e2e487a877
commit d1f4827a40
2 changed files with 4 additions and 3 deletions

@ -468,8 +468,8 @@ static int separate_armature_exec(bContext *C, wmOperator *UNUSED(op))
/* TODO: use context iterators for this? */ /* TODO: use context iterators for this? */
CTX_DATA_BEGIN(C, Base *, base, visible_bases) CTX_DATA_BEGIN(C, Base *, base, visible_bases)
{ {
if (base->object == obedit) base->flag |= 1; if (base->object == obedit) base->flag |= SELECT;
else base->flag &= ~1; else base->flag &= ~SELECT;
} }
CTX_DATA_END; CTX_DATA_END;

@ -86,12 +86,13 @@ static IKPlugin ikplugin_tab[] = {
static IKPlugin *get_plugin(bPose *pose) static IKPlugin *get_plugin(bPose *pose)
{ {
if (!pose || pose->iksolver < 0 || pose->iksolver > (sizeof(ikplugin_tab) / sizeof(IKPlugin) - 2)) if (!pose || pose->iksolver < 0 || pose->iksolver >= ((sizeof(ikplugin_tab) / sizeof(IKPlugin)) - 1))
return NULL; return NULL;
return &ikplugin_tab[pose->iksolver]; return &ikplugin_tab[pose->iksolver];
} }
/*----------------------------------------*/ /*----------------------------------------*/
/* Plugin API */ /* Plugin API */