bpf: btf: Fix vsnprintf return value check
authorFedor Tokarev <ftokarev@gmail.com>
Mon, 11 Jul 2022 21:13:17 +0000 (23:13 +0200)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 29 Jul 2022 16:57:14 +0000 (09:57 -0700)
vsnprintf returns the number of characters which would have been written if
enough space had been available, excluding the terminating null byte. Thus,
the return value of 'len_left' means that the last character has been
dropped.

Signed-off-by: Fedor Tokarev <ftokarev@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Alan Maguire <alan.maguire@oracle.com>
Link: https://lore.kernel.org/bpf/20220711211317.GA1143610@laptop
kernel/bpf/btf.c

index 7ac971e..7e64447 100644 (file)
@@ -6643,7 +6643,7 @@ static void btf_snprintf_show(struct btf_show *show, const char *fmt,
        if (len < 0) {
                ssnprintf->len_left = 0;
                ssnprintf->len = len;
-       } else if (len > ssnprintf->len_left) {
+       } else if (len >= ssnprintf->len_left) {
                /* no space, drive on to get length we would have written */
                ssnprintf->len_left = 0;
                ssnprintf->len += len;