diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2021-02-18 13:44:27 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2021-02-18 13:45:49 +0100 |
commit | 33745b1fc8cc6d41f4e708d67800d296668af2ce (patch) | |
tree | 613c65a05046c60cdd0f786434c2c55b2e2e8d1b | |
parent | 666a9a4c4d90c70e91272e72dcf3592410f1b5d0 (diff) |
ash: placate -Werror=format-security
"In function 'sprint_status48':
error: format not a string literal and no format arguments"
function old new delta
sprint_status48 160 158 -2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | include/platform.h | 8 | ||||
-rw-r--r-- | libbb/platform.c | 12 | ||||
-rw-r--r-- | shell/ash.c | 4 |
3 files changed, 21 insertions, 3 deletions
diff --git a/include/platform.h b/include/platform.h index d991f3140..24efd186b 100644 --- a/include/platform.h +++ b/include/platform.h @@ -407,6 +407,7 @@ typedef unsigned smalluint; #define HAVE_SETBIT 1 #define HAVE_SIGHANDLER_T 1 #define HAVE_STPCPY 1 +#define HAVE_STPNCPY 1 #define HAVE_MEMPCPY 1 #define HAVE_STRCASESTR 1 #define HAVE_STRCHRNUL 1 @@ -442,6 +443,7 @@ typedef unsigned smalluint; # undef HAVE_MKDTEMP # undef HAVE_SETBIT # undef HAVE_STPCPY +# undef HAVE_STPNCPY # undef HAVE_STRCASESTR # undef HAVE_STRCHRNUL # undef HAVE_STRSEP @@ -514,6 +516,7 @@ typedef unsigned smalluint; #if defined(__digital__) && defined(__unix__) # undef HAVE_STPCPY +# undef HAVE_STPNCPY #endif #if defined(ANDROID) || defined(__ANDROID__) @@ -530,6 +533,7 @@ typedef unsigned smalluint; # undef HAVE_TTYNAME_R # undef HAVE_GETLINE # undef HAVE_STPCPY +# undef HAVE_STPNCPY # endif # undef HAVE_MEMPCPY # undef HAVE_STRCHRNUL @@ -574,6 +578,10 @@ typedef void (*sighandler_t)(int); extern char *stpcpy(char *p, const char *to_add) FAST_FUNC; #endif +#ifndef HAVE_STPNCPY +extern char *stpncpy(char *p, const char *to_add, size_t n) FAST_FUNC; +#endif + #ifndef HAVE_MEMPCPY #include <string.h> /* In case we are wrong about !HAVE_MEMPCPY, and toolchain _does_ have diff --git a/libbb/platform.c b/libbb/platform.c index 329b0237e..7913353e2 100644 --- a/libbb/platform.c +++ b/libbb/platform.c @@ -166,6 +166,18 @@ char* FAST_FUNC stpcpy(char *p, const char *to_add) } #endif +#ifndef HAVE_STPNCPY +char* FAST_FUNC stpncpy(char *p, const char *to_add, size_t n) +{ + while (n != 0 && (*p = *to_add) != '\0') { + p++; + to_add++; + n--; + } + return p; +} +#endif + #ifndef HAVE_GETLINE ssize_t FAST_FUNC getline(char **lineptr, size_t *n, FILE *stream) { diff --git a/shell/ash.c b/shell/ash.c index 1aead6df4..6a16833b1 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -4263,9 +4263,7 @@ sprint_status48(char *os, int status, int sigonly) #endif } st &= 0x7f; -//TODO: use bbox's get_signame? strsignal adds ~600 bytes to text+rodata - //s = stpncpy(s, strsignal(st), 32); //not all libc have stpncpy() - s += fmtstr(s, 32, strsignal(st)); + s = stpncpy(s, strsignal(st), 32); if (WCOREDUMP(status)) { s = stpcpy(s, " (core dumped)"); } |