[Piglit] [PATCH 1/3] shader_runner: Use strndup to get a null-terminated string for 'line'
Francisco Jerez
currojerez at riseup.net
Tue May 26 05:10:05 PDT 2015
Jordan Justen <jordan.l.justen at intel.com> writes:
> In order to use sscanf with optional parameters, the string needs to
> be null terminated. Otherwise, sscanf will treat the newline as
> whitespace and continue to look for matches on the following lines.
>
> Signed-off-by: Jordan Justen <jordan.l.justen at intel.com>
> ---
> tests/shaders/shader_runner.c | 21 ++++++++++++++-------
> 1 file changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/tests/shaders/shader_runner.c b/tests/shaders/shader_runner.c
> index 1827e08..2df9e78 100644
> --- a/tests/shaders/shader_runner.c
> +++ b/tests/shaders/shader_runner.c
> @@ -2294,7 +2294,7 @@ probe_atomic_counter(GLint counter_num, const char *op, uint32_t value)
> enum piglit_result
> piglit_display(void)
> {
> - const char *line;
> + const char *line, *next_line;
> bool pass = true;
> GLbitfield clear_bits = 0;
> bool link_error_expected = false;
> @@ -2303,14 +2303,23 @@ piglit_display(void)
> if (test_start == NULL)
> return PIGLIT_PASS;
>
> - line = test_start;
> - while (line[0] != '\0') {
> + next_line = test_start;
> + while (next_line[0] != '\0') {
> float c[32];
> double d[4];
> int x, y, z, w, h, l, tex, level;
> char s[32];
>
> - line = eat_whitespace(line);
> +
> + line = eat_whitespace(next_line);
> +
> + next_line = strchrnul(next_line, '\n');
> +
> + if (next_line[0] != '\0')
> + next_line++;
> +
> + /* Duplicate the line to make it null terminated */
> + line = strndup(line, next_line - line);
>
> if (sscanf(line, "atomic counters %d", &x) == 1) {
> GLuint *atomics_buf = calloc(x, sizeof(GLuint));
> @@ -2701,9 +2710,7 @@ piglit_display(void)
> piglit_report_result(PIGLIT_FAIL);
> }
>
> - line = strchrnul(line, '\n');
> - if (line[0] != '\0')
> - line++;
> + free((void*) line);
The cast to void * seems redundant, with that fixed:
Reviewed-by: Francisco Jerez <currojerez at riseup.net>
> }
>
> if (!link_ok && !link_error_expected) {
> --
> 2.1.4
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20150526/1cfb8448/attachment.sig>
More information about the Piglit
mailing list