diff options
author | Jakob Sinclair <sinclair.jakob@openmailbox.org> | 2016-05-11 14:10:19 +0200 |
---|---|---|
committer | Alejandro Piñeiro <apinheiro@igalia.com> | 2016-05-12 09:46:36 +0200 |
commit | 18f7c88dd692409935bd74f82dc48f524cf951f6 (patch) | |
tree | f87dece7cc65542de89b499f51d9714666f4cc22 /src/compiler/glsl/ir.cpp | |
parent | ba3f0b6d5920165c735d51500544da8c29b09060 (diff) | |
download | external_mesa3d-18f7c88dd692409935bd74f82dc48f524cf951f6.zip external_mesa3d-18f7c88dd692409935bd74f82dc48f524cf951f6.tar.gz external_mesa3d-18f7c88dd692409935bd74f82dc48f524cf951f6.tar.bz2 |
glsl: fixed uninitialized pointer
Class "ir_constant" had a bunch of constructors where the pointer member
"array_elements" had not been initialized. This could have lead to unsafe
code if something had tried to write anything to it. This patch fixes
this issue by initializing the pointer to NULL in all the constructors.
This issue was discovered by Coverity.
CID: 401603, 401604, 401605, 401610
Signed-off-by: Jakob Sinclair <sinclair.jakob@openmailbox.org>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Diffstat (limited to 'src/compiler/glsl/ir.cpp')
-rw-r--r-- | src/compiler/glsl/ir.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/compiler/glsl/ir.cpp b/src/compiler/glsl/ir.cpp index d69ab13..9637d7a 100644 --- a/src/compiler/glsl/ir.cpp +++ b/src/compiler/glsl/ir.cpp @@ -663,12 +663,15 @@ ir_expression::variable_referenced() const ir_constant::ir_constant() : ir_rvalue(ir_type_constant) { + this->array_elements = NULL; } ir_constant::ir_constant(const struct glsl_type *type, const ir_constant_data *data) : ir_rvalue(ir_type_constant) { + this->array_elements = NULL; + assert((type->base_type >= GLSL_TYPE_UINT) && (type->base_type <= GLSL_TYPE_BOOL)); @@ -744,6 +747,7 @@ ir_constant::ir_constant(bool b, unsigned vector_elements) ir_constant::ir_constant(const ir_constant *c, unsigned i) : ir_rvalue(ir_type_constant) { + this->array_elements = NULL; this->type = c->type->get_base_type(); switch (this->type->base_type) { @@ -759,6 +763,7 @@ ir_constant::ir_constant(const ir_constant *c, unsigned i) ir_constant::ir_constant(const struct glsl_type *type, exec_list *value_list) : ir_rvalue(ir_type_constant) { + this->array_elements = NULL; this->type = type; assert(type->is_scalar() || type->is_vector() || type->is_matrix() |