mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 00:00:11 +01:00
glsl: Fix NULL pointer dereferences when linking fails.
Commit 7cfefe6965 introduced a check for whether linked->Type equals
GL_GEOMETRY_SHADER. However, linked may be NULL due to an earlier error
condition.
Since the entire function after the error path is (or should be) guarded
by linked != NULL checks, we may as well just return early and remove
the checks.
Fixes crashes in 9 Piglit tests.
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
parent
9d569fed8d
commit
7d2423a09e
1 changed files with 5 additions and 8 deletions
|
|
@ -1233,7 +1233,8 @@ link_intrastage_shaders(void *mem_ctx,
|
|||
if (!link_function_calls(prog, linked, linking_shaders,
|
||||
num_linking_shaders)) {
|
||||
ctx->Driver.DeleteShader(ctx, linked);
|
||||
linked = NULL;
|
||||
free(linking_shaders);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
free(linking_shaders);
|
||||
|
|
@ -1241,8 +1242,7 @@ link_intrastage_shaders(void *mem_ctx,
|
|||
/* At this point linked should contain all of the linked IR, so
|
||||
* validate it to make sure nothing went wrong.
|
||||
*/
|
||||
if (linked)
|
||||
validate_ir_tree(linked->ir);
|
||||
validate_ir_tree(linked->ir);
|
||||
|
||||
/* Set the size of geometry shader input arrays */
|
||||
if (linked->Type == GL_GEOMETRY_SHADER) {
|
||||
|
|
@ -1258,11 +1258,8 @@ link_intrastage_shaders(void *mem_ctx,
|
|||
* unspecified sizes have a size specified. The size is inferred from the
|
||||
* max_array_access field.
|
||||
*/
|
||||
if (linked != NULL) {
|
||||
array_sizing_visitor v;
|
||||
|
||||
v.run(linked->ir);
|
||||
}
|
||||
array_sizing_visitor v;
|
||||
v.run(linked->ir);
|
||||
|
||||
return linked;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue