[Piglit] [PATCH] shader_runner: Check sscanf return value.

Dylan Baker dylan at pnwbakers.com
Mon Nov 7 22:29:31 UTC 2016


Quoting Vinson Lee (2016-11-07 14:03:41)
> On Mon, Nov 7, 2016 at 10:03 AM, Dylan Baker <dylan at pnwbakers.com> wrote:
> > Quoting Vinson Lee (2016-11-04 16:30:39)
> >> Fix Coverity unchecked return value defect.
> >>
> >> CID: 1373655
> >> Signed-off-by: Vinson Lee <vlee at freedesktop.org>
> >> ---
> >>  tests/shaders/shader_runner.c | 7 ++++++-
> >>  1 file changed, 6 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c
> >> index 02a6cd7cda82..62fc8120a30c 100644
> >> --- a/tests/shaders/shader_runner.c
> >> +++ b/tests/shaders/shader_runner.c
> >> @@ -2769,8 +2769,13 @@ handle_texparameter(const char *line)
> >>                 return;
> >>         } else if (string_match("border_color ", line)) {
> >>                 float bc[4];
> >> +               int count;
> >>                 line += strlen("border_color ");
> >> -               sscanf(line, "%f %f %f %f", &bc[0], &bc[1], &bc[2], &bc[3]);
> >> +               count = sscanf(line, "%f %f %f %f", &bc[0], &bc[1], &bc[2], &bc[3]);
> >> +               if (count != 4) {
> >> +                       fprintf(stderr, "Could not parse border_color texture parameter.\n");
> >> +                       piglit_report_result(PIGLIT_FAIL);
> >
> > This breaks running more than one shader test at a time.
> > This should be "result = PIGLIT_FAIL;"
> >
> 
> There is no result to be returned by handle_texparameter though and
> the final else statement also reports PIGLIT_FAIL.
> 
> >> +               }
> >>                 glTexParameterfv(target, GL_TEXTURE_BORDER_COLOR, bc);
> >>                 return;
> >>         } else if (string_match("swizzle_r ", line)) {
> >> --
> >> 2.7.4
> >>
> >> _______________________________________________
> >> Piglit mailing list
> >> Piglit at lists.freedesktop.org
> >> https://lists.freedesktop.org/mailman/listinfo/piglit

Right, but currently the function doesn't piglit_report_result except with
PIGLIT_SKIP, which has an explicit workaround because it can get raised in low
levels of the framework. This will break running more than one shader test at a
time if it hits the piglit_report_result you're adding.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 455 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/piglit/attachments/20161107/e02607dd/attachment.sig>


More information about the Piglit mailing list