From 75a874d7e5c0add2b661d32b7227fff7bc8a8ae7 Mon Sep 17 00:00:00 2001 From: Tsarevich Dmitry Date: Tue, 18 Feb 2020 01:33:20 +0300 Subject: [PATCH] [fmt] Fix incorrect format specifiers in printf * Since tm.* members are ints, apply cast to unsigned int to format them correctly via printf. * I64d(u) is not correct format specifier for long long (unsigned), since such types can be more than 64 bit long. Either use platform -specific (u)int64_t, or, better, change format specifier to %lld / %llu. See https://stackoverflow.com/questions/15718039/why-the-use-of-cin-cout-or-i64d-is-preferred-over-lld-specifier-in-c for details. --- src/bled/header_verbose_list.c | 28 ++++++++++++++-------------- src/bled/libbb.h | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/bled/header_verbose_list.c b/src/bled/header_verbose_list.c index 87dd8213..a7f27bb8 100644 --- a/src/bled/header_verbose_list.c +++ b/src/bled/header_verbose_list.c @@ -33,13 +33,13 @@ void FAST_FUNC header_verbose_list(const file_header_t *file_header) bb_mode_string(file_header->mode), user, group, - file_header->size, - 1900 + ptm->tm_year, - 1 + ptm->tm_mon, - ptm->tm_mday, - ptm->tm_hour, - ptm->tm_min, - ptm->tm_sec, + (unsigned long long)file_header->size, + 1900U + (unsigned)ptm->tm_year, + 1U + (unsigned)ptm->tm_mon, + (unsigned)ptm->tm_mday, + (unsigned)ptm->tm_hour, + (unsigned)ptm->tm_min, + (unsigned)ptm->tm_sec, file_header->name); #else /* !FEATURE_TAR_UNAME_GNAME */ @@ -50,13 +50,13 @@ void FAST_FUNC header_verbose_list(const file_header_t *file_header) bb_mode_string(file_header->mode), (unsigned)file_header->uid, (unsigned)file_header->gid, - file_header->size, - 1900 + ptm->tm_year, - 1 + ptm->tm_mon, - ptm->tm_mday, - ptm->tm_hour, - ptm->tm_min, - ptm->tm_sec, + (unsigned long long)file_header->size, + 1900U + (unsigned)ptm->tm_year, + 1U + (unsigned)ptm->tm_mon, + (unsigned)ptm->tm_mday, + (unsigned)ptm->tm_hour, + (unsigned)ptm->tm_min, + (unsigned)ptm->tm_sec, file_header->name); #endif /* FEATURE_TAR_UNAME_GNAME */ diff --git a/src/bled/libbb.h b/src/bled/libbb.h index ee918ae3..ad930b6f 100644 --- a/src/bled/libbb.h +++ b/src/bled/libbb.h @@ -46,7 +46,7 @@ #define IF_NOT_FEATURE_LZMA_FAST(x) x #define uoff_t unsigned off_t -#define OFF_FMT "I64" +#define OFF_FMT "ll" #ifndef _MODE_T_ #define _MODE_T_