From d2f0442bf632eef7dddcd77add8556f6be029b5e Mon Sep 17 00:00:00 2001 From: Juha-Pekka Heikkila Date: Wed, 7 May 2014 16:20:12 +0300 Subject: [PATCH] glsl: Check calloc return value in link_intrastage_shaders() Check calloc return value while adding build-in functions. Signed-off-by: Juha-Pekka Heikkila Reviewed-by: Anuj Phogat --- src/glsl/linker.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index 7689198..75e8b16 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -1714,12 +1714,19 @@ link_intrastage_shaders(void *mem_ctx, */ gl_shader **linking_shaders = (gl_shader **) calloc(num_shaders + 1, sizeof(gl_shader *)); - memcpy(linking_shaders, shader_list, num_shaders * sizeof(gl_shader *)); - linking_shaders[num_shaders] = _mesa_glsl_get_builtin_function_shader(); - ok = link_function_calls(prog, linked, linking_shaders, num_shaders + 1); + ok = linking_shaders != NULL; - free(linking_shaders); + if (ok) { + memcpy(linking_shaders, shader_list, num_shaders * sizeof(gl_shader *)); + linking_shaders[num_shaders] = _mesa_glsl_get_builtin_function_shader(); + + ok = link_function_calls(prog, linked, linking_shaders, num_shaders + 1); + + free(linking_shaders); + } else { + _mesa_error_no_memory(__func__); + } } else { ok = link_function_calls(prog, linked, shader_list, num_shaders); } -- 2.7.4