From 4bf3165a559fe334e6ebb719d8255069bd8103da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net> Date: Fri, 29 Dec 2023 12:50:12 -0500 Subject: [PATCH] Fix issue found by coverity. --- src/sftp/sftp_pkt.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/sftp/sftp_pkt.c b/src/sftp/sftp_pkt.c index c567740efc..131716f591 100644 --- a/src/sftp/sftp_pkt.c +++ b/src/sftp/sftp_pkt.c @@ -314,10 +314,20 @@ sftp_append64(sftp_tx_pkt_t *pktp, uint64_t u64) bool sftp_appendstring(sftp_tx_pkt_t *pktp, sftp_str_t s) { + uint32_t oldused; + assert(pktp); - sftp_append32(pktp, s->len); - if (!grow_tx(pktp, s->len)) + if (*pktp == NULL) + oldused = 0; + else + oldused = (*pktp)->used; + if (!sftp_append32(pktp, s->len)) + return false; + if (!grow_tx(pktp, s->len)) { + if (*pktp != NULL) + (*pktp)->used = oldused; return false; + } sftp_tx_pkt_t pkt = *pktp; memcpy(&(&pkt->type)[pkt->used], (uint8_t *)s->c_str, s->len); pkt->used += s->len; -- GitLab