]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
perf hists: Fix snprintf() in hists__scnprintf_title() UID filter path
authorArnaldo Carvalho de Melo <acme@redhat.com>
Sun, 7 Jun 2026 17:35:28 +0000 (14:35 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 10 Jun 2026 18:23:53 +0000 (15:23 -0300)
hists__scnprintf_title() accumulates formatted output into a buffer
using scnprintf() for all filter clauses except the UID filter, which
uses snprintf().  If the buffer fills up and snprintf() returns more
than the remaining space, printed exceeds size and the next 'size -
printed' underflows, causing later scnprintf() calls to write past
the buffer.

Switch the UID filter clause to scnprintf() to match the rest of the
function.

Fixes: 25c312dbf88ca402 ("perf hists: Move hists__scnprintf_title() away from the TUI code")
Reported-by: sashiko-bot <sashiko-bot@kernel.org>
Reviewed-by: Ian Rogers <irogers@google.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/hist.c

index 811d68fa6770c5b71cc5a28303c856264849d33f..df978c996b6c22626405ea317d15841ab6810afa 100644 (file)
@@ -2963,9 +2963,10 @@ int __hists__scnprintf_title(struct hists *hists, char *bf, size_t size, bool sh
                           ev_name, sample_freq_str, enable_ref ? ref : " ", nr_events);
 
 
-       if (hists->uid_filter_str)
-               printed += snprintf(bf + printed, size - printed,
-                                   ", UID: %s", hists->uid_filter_str);
+       if (hists->uid_filter_str) {
+               printed += scnprintf(bf + printed, size - printed,
+                                    ", UID: %s", hists->uid_filter_str);
+       }
        if (thread) {
                if (hists__has(hists, thread)) {
                        printed += scnprintf(bf + printed, size - printed,