On 3/10/26 11:21, Sun Jian wrote:
> read_iter() always NUL-terminated at the end of the buffer, so strstr()
> could scan uninitialized stack bytes on short reads. Terminate at len and
> use O_RDONLY.
> 
> Signed-off-by: Sun Jian <[email protected]>
> ---
>  tools/testing/selftests/bpf/prog_tests/test_bpffs.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/prog_tests/test_bpffs.c 
> b/tools/testing/selftests/bpf/prog_tests/test_bpffs.c
> index ea933fd151c3..e8021ff0581c 100644
> --- a/tools/testing/selftests/bpf/prog_tests/test_bpffs.c
> +++ b/tools/testing/selftests/bpf/prog_tests/test_bpffs.c
> @@ -17,11 +17,11 @@ static int read_iter(char *file)
>       char buf[1024];
>       int fd, len;
>  
> -     fd = open(file, 0);
> +     fd = open(file, O_RDONLY);
>       if (fd < 0)
>               return -1;
> -     while ((len = read(fd, buf, sizeof(buf))) > 0) {
> -             buf[sizeof(buf) - 1] = '\0';
> +     while ((len = read(fd, buf, sizeof(buf) - 1)) > 0) {
> +             buf[len] = '\0';

Does this fix any real issue with the test? I can see one very
hypothetical false negative when the uninitialized memory would contain
"iter" but that seems very unlikely to happen.

Viktor

>               if (strstr(buf, "iter")) {
>                       close(fd);
>                       return 0;
> 
> base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681


Reply via email to