[libvirt] [PATCH] util: Fix leak in virStringTrimOptionalNewline

Do not access any data if strlen() == 0. Signed-off-by: Martin Kletzander <mkletzan@redhat.com> --- src/util/virstring.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/util/virstring.c b/src/util/virstring.c index eac4774b533e..b2ebce27ff49 100644 --- a/src/util/virstring.c +++ b/src/util/virstring.c @@ -1394,9 +1394,13 @@ virStringEncodeBase64(const uint8_t *buf, size_t buflen) */ void virStringTrimOptionalNewline(char *str) { - char *tmp = str + strlen(str) - 1; - if (*tmp == '\n') - *tmp = '\0'; + size_t len = strlen(str); + + if (!len) + return; + + if (str[len - 1] == '\n') + str[len - 1] = '\0'; } -- 2.15.0

On 11/22/2017 10:03 PM, Martin Kletzander wrote:
Do not access any data if strlen() == 0.
Signed-off-by: Martin Kletzander <mkletzan@redhat.com> --- src/util/virstring.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/util/virstring.c b/src/util/virstring.c index eac4774b533e..b2ebce27ff49 100644 --- a/src/util/virstring.c +++ b/src/util/virstring.c @@ -1394,9 +1394,13 @@ virStringEncodeBase64(const uint8_t *buf, size_t buflen) */ void virStringTrimOptionalNewline(char *str) { - char *tmp = str + strlen(str) - 1; - if (*tmp == '\n') - *tmp = '\0'; + size_t len = strlen(str); + + if (!len) + return; + + if (str[len - 1] == '\n') + str[len - 1] = '\0'; }
/me wonders if we need this function to accept NULL. Looking at the callers we don't just yet. ACK Michal
participants (2)
-
Martin Kletzander
-
Michal Privoznik