From: Michael Tremer Date: Wed, 31 Aug 2022 12:50:54 +0000 (+0000) Subject: string: Change that set will copy empty strings X-Git-Tag: 0.9.28~354 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=37c9c092467b277e295f2b5823d2bf936f000114;p=pakfire.git string: Change that set will copy empty strings Otherwise, we would have seen "(null)" which is not what we want. Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/string.h b/src/libpakfire/include/pakfire/string.h index a0e46d9c6..2fc1ed96e 100644 --- a/src/libpakfire/include/pakfire/string.h +++ b/src/libpakfire/include/pakfire/string.h @@ -38,7 +38,9 @@ int __pakfire_string_vformat(char* s, const size_t length, /* Simpler version when a string needs to be copied. */ -#define pakfire_string_set(s, value) pakfire_string_format(s, "%s", value) +#define pakfire_string_set(s, value) \ + __pakfire_string_set(s, sizeof(s), value) +int __pakfire_string_set(char* s, const size_t length, const char* value); int pakfire_string_startswith(const char* s, const char* prefix); int pakfire_string_endswith(const char* s, const char* suffix); diff --git a/src/libpakfire/string.c b/src/libpakfire/string.c index bd0b07642..c213215da 100644 --- a/src/libpakfire/string.c +++ b/src/libpakfire/string.c @@ -57,6 +57,19 @@ int __pakfire_string_vformat(char* s, const size_t length, const char* format, v return 0; } +int __pakfire_string_set(char* s, const size_t length, const char* value) { + // If value is NULL or an empty, we will overwrite the buffer with just zeros + if (!value || !*value) { + for (unsigned int i = 0; i < length; i++) + s[i] = '\0'; + + return 0; + } + + // Otherwise just copy + return __pakfire_string_format(s, length, "%s", value); +} + int pakfire_string_startswith(const char* s, const char* prefix) { // Validate input if (!s || !prefix) {