summaryrefslogtreecommitdiffstats
path: root/src/compiler/glsl/ir.cpp
diff options
context:
space:
mode:
authorJakob Sinclair <sinclair.jakob@openmailbox.org>2016-05-11 14:10:19 +0200
committerAlejandro Piñeiro <apinheiro@igalia.com>2016-05-12 09:46:36 +0200
commit18f7c88dd692409935bd74f82dc48f524cf951f6 (patch)
treef87dece7cc65542de89b499f51d9714666f4cc22 /src/compiler/glsl/ir.cpp
parentba3f0b6d5920165c735d51500544da8c29b09060 (diff)
downloadexternal_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.cpp5
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()