]> git.sur5r.net Git - u-boot/commitdiff
lib: fix return codes when CONFIG_SYS_VSNPRINTF is enabled
authorDarwin Rambo <drambo@broadcom.com>
Thu, 19 Dec 2013 23:14:19 +0000 (15:14 -0800)
committerTom Rini <trini@ti.com>
Fri, 24 Jan 2014 21:59:07 +0000 (16:59 -0500)
When CONFIG_SYS_VSNPRINTF is enabled, it protects print operations
such as sprintf, snprintf, vsnprintf, etc., from buffer overflows.
But vsnprintf_internal includes the terminating NULL character in
the calculation of number of characters written. This affects sprintf
and snprintf return values. Fix this issue by setting pointer 'str'
back to the location of the '\0'.

Signed-off-by: Darwin Rambo <drambo@broadcom.com>
Reviewed-by: Steve Rae <srae@broadcom.com>
lib/vsprintf.c

index 82e5c13653b68d490257a244701966051d05d2fe..60874dae3ebd2a922d45a67e4ea9b8ff49dc3528 100644 (file)
@@ -750,6 +750,7 @@ repeat:
                ADDCH(str, '\0');
                if (str > end)
                        end[-1] = '\0';
+               --str;
        }
 #else
        *str = '\0';