From: Jonathan Nieder <jrnieder@gmail.com>
To: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Cc: git@vger.kernel.org, Mike McCormack <mikem@ring3k.org>,
Benjamin Kramer <benny.kra@googlemail.com>,
Junio C Hamano <gitster@pobox.com>
Subject: [PATCH maint] imap-send: Fix sprintf usage
Date: Sat, 7 Aug 2010 18:09:45 -0500 [thread overview]
Message-ID: <20100807230945.GA3427@burratino> (raw)
In-Reply-To: <AANLkTim4CHdVLinkw1EjXB74OJ+YW-ri4GzHMNhRd+Cy@mail.gmail.com>
From: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
When composing a command for the imap server, imap-send uses a single
nfsnprintf() invocation for brevity instead of dealing separately with
the case when there is a message to be sent and the case when there
isn’t. The unused argument in the second case, while valid, is
confusing for static analyzers and human readers.
v1.6.4-rc0~117 (imap-send: add support for IPv6, 2009-05-25)
mistakenly used %hu as the format for an int “port”, by analogy with
existing usage for the unsigned short “addr.sin_port”. Use %d
instead.
Noticed with clang.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Ævar Arnfjörð Bjarmason wrote:
> I wasn't sure whether it needed to be %hu for the purposes of the
> snprintf() call. I.e. that the resulting contents of portstr might be
> different on some systems.
>
> Maybe they won't be, then we could just use %d.
It’s just a nonnegative integer. :)
Here’s the updated patch. Untested.
imap-send.c | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/imap-send.c b/imap-send.c
index 1a577a0..3a02e89 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -543,9 +543,13 @@ static struct imap_cmd *v_issue_imap_cmd(struct imap_store *ctx,
while (imap->literal_pending)
get_cmd_result(ctx, NULL);
- bufl = nfsnprintf(buf, sizeof(buf), cmd->cb.data ? CAP(LITERALPLUS) ?
- "%d %s{%d+}\r\n" : "%d %s{%d}\r\n" : "%d %s\r\n",
- cmd->tag, cmd->cmd, cmd->cb.dlen);
+ if (!cmd->cb.data)
+ bufl = nfsnprintf(buf, sizeof(buf), "%d %s\r\n", cmd->tag, cmd->cmd);
+ else
+ bufl = nfsnprintf(buf, sizeof(buf), "%d %s{%d%s}\r\n",
+ cmd->tag, cmd->cmd, cmd->cb.dlen,
+ CAP(LITERALPLUS) ? "+" : "");
+
if (Verbose) {
if (imap->num_in_progress)
printf("(%d in progress) ", imap->num_in_progress);
@@ -1086,7 +1090,7 @@ static struct store *imap_open_store(struct imap_server_conf *srvc)
int gai;
char portstr[6];
- snprintf(portstr, sizeof(portstr), "%hu", srvc->port);
+ snprintf(portstr, sizeof(portstr), "%d", srvc->port);
memset(&hints, 0, sizeof(hints));
hints.ai_socktype = SOCK_STREAM;
--
1.7.2.1.544.ga752d.dirty
next prev parent reply other threads:[~2010-08-07 23:11 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-07 12:12 [RFC/PATCH] imap-send: Code correctness flagged by clang Ævar Arnfjörð Bjarmason
2010-08-07 21:04 ` Jonathan Nieder
2010-08-07 22:53 ` Ævar Arnfjörð Bjarmason
2010-08-07 23:09 ` Jonathan Nieder [this message]
2010-08-07 23:25 ` [PATCH maint] imap-send: Fix sprintf usage Ævar Arnfjörð Bjarmason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100807230945.GA3427@burratino \
--to=jrnieder@gmail.com \
--cc=avarab@gmail.com \
--cc=benny.kra@googlemail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=mikem@ring3k.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).