[Piglit] [PATCH] gl-3.2-adj-prims: Fix reference of out-of-scope data.

Vinson Lee vlee at freedesktop.org
Thu Jul 14 19:10:36 UTC 2016


On Wed, Jul 13, 2016 at 7:10 PM, Brian Paul <brianp at vmware.com> wrote:
> On 07/13/2016 05:54 PM, Vinson Lee wrote:
>>
>> Fix pointer to local outside scope defect reported by Coverity.
>>
>> CID: 1362489
>> Fixes: 67db7e28be1f ("gl-3.2-adj-prims: new test of adjacency primitives
>> with rendering options")
>> Signed-off-by: Vinson Lee <vlee at freedesktop.org>
>> ---
>>   tests/spec/gl-3.2/adj-prims.c | 15 +++++++++++----
>>   1 file changed, 11 insertions(+), 4 deletions(-)
>>
>> diff --git a/tests/spec/gl-3.2/adj-prims.c b/tests/spec/gl-3.2/adj-prims.c
>> index 2df764e66d49..9d2f121f2a39 100644
>> --- a/tests/spec/gl-3.2/adj-prims.c
>> +++ b/tests/spec/gl-3.2/adj-prims.c
>> @@ -302,7 +302,9 @@ probe_prims(GLenum prim_mode, const float verts[][2],
>> unsigned num_verts,
>>
>>         for (prim = 0; prim < num_prims; prim++) {
>>                 bool pass = false;
>> -               const float *expected_color = NULL, *bad_color = NULL;
>> +               const float *expected_color = NULL;
>> +               float bad_color[4];
>> +               bool bad_color_found = false;
>>                 int x, y, i;
>>
>>                 compute_probe_location(prim_mode, prim, verts,
>> @@ -333,8 +335,13 @@ probe_prims(GLenum prim_mode, const float verts[][2],
>> unsigned num_verts,
>>                                         // check for expected color
>>                                         if (colors_match(expected_color,
>> buf[i]))
>>                                                 pass = true;
>> -                                       else
>> -                                               bad_color = buf[i];
>> +                                       else {
>> +                                               bad_color_found = true;
>> +                                               bad_color[0] = buf[i][0];
>> +                                               bad_color[1] = buf[i][1];
>> +                                               bad_color[2] = buf[i][2];
>> +                                               bad_color[3] = buf[i][3];
>> +                                       }
>>                                 }
>>                         }
>>                 }
>> @@ -343,7 +350,7 @@ probe_prims(GLenum prim_mode, const float verts[][2],
>> unsigned num_verts,
>>                         printf("Failure for %s, "
>>                                "prim %u wrong color at (%d,%d)\n",
>>                                piglit_get_prim_name(prim_mode), prim, x,
>> y);
>> -                       if (expected_color && bad_color) {
>> +                       if (expected_color && bad_color_found) {
>>                                 printf("Expected %.1g, %.1g, %.1g,
>> %.1g\n",
>>                                        expected_color[0],
>>                                        expected_color[1],
>>
>
> Alternately, could we move the declaration of bad_color to the top of the
> function?
>
> But this is OK too.
>
> Reviewed-by: Brian Paul <brianp at vmware.com>
>
>

It was the assignment of bad_color to buf and then the use of
bad_color after buf was out-of-scope that was the issue. We can move
the declaration of buf to the top of the function if that is
preferred.


More information about the Piglit mailing list