Check if mesa_vp->Base.Parameters is null before dereferencing (bug report

from Chris Rankin).
Also, fix some bad casts.
This commit is contained in:
Brian Paul
2006-08-24 15:57:12 +00:00
parent 4169c220bd
commit 116411d5f0

View File

@@ -101,7 +101,7 @@ static GLboolean r200VertexProgUpdateParams(GLcontext *ctx, struct r200_vertex_p
r200ContextPtr rmesa = R200_CONTEXT( ctx ); r200ContextPtr rmesa = R200_CONTEXT( ctx );
GLfloat *fcmd = (GLfloat *)&rmesa->hw.vpp[0].cmd[VPP_CMD_0 + 1]; GLfloat *fcmd = (GLfloat *)&rmesa->hw.vpp[0].cmd[VPP_CMD_0 + 1];
int pi; int pi;
struct gl_vertex_program *mesa_vp = (void *)vp; struct gl_vertex_program *mesa_vp = &vp->mesa_program;
struct gl_program_parameter_list *paramList; struct gl_program_parameter_list *paramList;
drm_radeon_cmd_header_t tmp; drm_radeon_cmd_header_t tmp;
@@ -391,7 +391,7 @@ static unsigned long op_operands(enum prog_opcode opcode)
static GLboolean r200_translate_vertex_program(struct r200_vertex_program *vp) static GLboolean r200_translate_vertex_program(struct r200_vertex_program *vp)
{ {
struct gl_vertex_program *mesa_vp = (void *)vp; struct gl_vertex_program *mesa_vp = &vp->mesa_program;
struct prog_instruction *vpi; struct prog_instruction *vpi;
int i; int i;
VERTEX_SHADER_INSTRUCTION *o_inst; VERTEX_SHADER_INSTRUCTION *o_inst;
@@ -544,7 +544,10 @@ static GLboolean r200_translate_vertex_program(struct r200_vertex_program *vp)
vp->pos_end = 0; vp->pos_end = 0;
mesa_vp->Base.NumNativeInstructions = 0; mesa_vp->Base.NumNativeInstructions = 0;
mesa_vp->Base.NumNativeParameters = mesa_vp->Base.Parameters->NumParameters; if (mesa_vp->Base.Parameters)
mesa_vp->Base.NumNativeParameters = mesa_vp->Base.Parameters->NumParameters;
else
mesa_vp->Base.NumNativeParameters = 0;
for(i=0; i < VERT_ATTRIB_MAX; i++) for(i=0; i < VERT_ATTRIB_MAX; i++)
vp->inputs[i] = -1; vp->inputs[i] = -1;