mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 02:17:36 -04:00
perf build-id: Fix off-by-one bug when printing kernel/module build-id
When changing sprintf functions to snprintf, one byte got lost. Since
snprintf ones do not handle the '\0' terminating character, the number
of printed characters is 40, while sizeof(sbuild_id) is 41, including
the terminating '\0' character.
This makes the later check fail so that nothing is printed.
Fix that.
Before:
[Michael@Carbon ~]$ perf buildid-list -k
[Michael@Carbon ~]$
After:
[Michael@Carbon ~]$ perf buildid-list -k
a527806324d543c4bc3ff2f9c9519d494fed5f68
[Michael@Carbon ~]$
Fixes: fccaaf6fbb ("perf build-id: Change sprintf functions to snprintf")
Signed-off-by: Michael Petlan <mpetlan@redhat.com>
Tested-by: Ian Rogers <irogers@google.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
b5050b133e
commit
017bca78e4
@@ -61,7 +61,7 @@ static int sysfs__fprintf_build_id(FILE *fp)
|
||||
int ret;
|
||||
|
||||
ret = sysfs__snprintf_build_id("/", sbuild_id, sizeof(sbuild_id));
|
||||
if (ret != sizeof(sbuild_id))
|
||||
if (ret + 1 != sizeof(sbuild_id))
|
||||
return ret < 0 ? ret : -EINVAL;
|
||||
|
||||
return fprintf(fp, "%s\n", sbuild_id);
|
||||
@@ -73,7 +73,7 @@ static int filename__fprintf_build_id(const char *name, FILE *fp)
|
||||
int ret;
|
||||
|
||||
ret = filename__snprintf_build_id(name, sbuild_id, sizeof(sbuild_id));
|
||||
if (ret != sizeof(sbuild_id))
|
||||
if (ret + 1 != sizeof(sbuild_id))
|
||||
return ret < 0 ? ret : -EINVAL;
|
||||
|
||||
return fprintf(fp, "%s\n", sbuild_id);
|
||||
|
||||
Reference in New Issue
Block a user