selftests/bpf: test_progs: fix verbose mode garbage
fseeko(.., 0, SEEK_SET) on a memstream just puts the buffer pointer
to the beginning so when we call fflush on it we get some garbage
log data from the previous test. Let's manually set terminating
byte to zero at the reported buffer size.
To show the issue consider the following snippet:
stream = open_memstream (&buf, &len);
fprintf(stream, "aaa");
fflush(stream);
printf("buf=%s, len=%zu\n", buf, len);
fseeko(stream, 0, SEEK_SET);
fprintf(stream, "b");
fflush(stream);
printf("buf=%s, len=%zu\n", buf, len);
Output:
buf=aaa, len=3
buf=baa, len=1
Fixes: 946152b3c5
("selftests/bpf: test_progs: switch to open_memstream")
Signed-off-by: Stanislav Fomichev <sdf@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
parent
bdb15a29cc
commit
d80507d15d
|
@ -45,6 +45,7 @@ static void dump_test_log(const struct prog_test_def *test, bool failed)
|
|||
|
||||
if (env.verbose || test->force_log || failed) {
|
||||
if (env.log_cnt) {
|
||||
env.log_buf[env.log_cnt] = '\0';
|
||||
fprintf(env.stdout, "%s", env.log_buf);
|
||||
if (env.log_buf[env.log_cnt - 1] != '\n')
|
||||
fprintf(env.stdout, "\n");
|
||||
|
|
Loading…
Reference in New Issue