[Piglit] [PATCH] util: fix off-by-one when loading source

Lionel Landwerlin lionel.g.landwerlin at intel.com
Sun Jan 20 18:05:44 UTC 2019


On 19/01/2019 23:49, Caio Marcelo de Oliveira Filho wrote:
> One extra character is leaking from the text into the copied line.
> The "+ 1" is an artifact from when malloc was used, strndup will add
> the extra '\0' after copying text_size bytes (if available).
>
> 7c8ee3f0f "util: simplify string duplication logic"
> ---
>   tests/util/piglit-shader-test.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tests/util/piglit-shader-test.c b/tests/util/piglit-shader-test.c
> index 39df2948d..35ed3a81e 100644
> --- a/tests/util/piglit-shader-test.c
> +++ b/tests/util/piglit-shader-test.c
> @@ -140,7 +140,7 @@ piglit_load_source_from_shader_test(const char *filename,
>   		return false;
>   	}
>   
> -	text_size = line - first_line + 1;
> +	text_size = line - first_line;


The difference between strndup & snprintf is that the former one copies 
n characters plus an additional '\0' while the latter copies n 
characters including '\0'.


Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>


>   
>   	if (output_source)
>   		*output_source = strndup(first_line, text_size);




More information about the Piglit mailing list