You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by jd...@apache.org on 2020/07/11 11:40:12 UTC

[qpid-proton] branch master updated: PROTON-2252 Fix Coverity warning of buffer overrun in pn_proactor_addr (#267)

This is an automated email from the ASF dual-hosted git repository.

jdanek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/qpid-proton.git


The following commit(s) were added to refs/heads/master by this push:
     new f7b3a4c  PROTON-2252 Fix Coverity warning of buffer overrun in pn_proactor_addr (#267)
f7b3a4c is described below

commit f7b3a4c433475b1933c88278f5729236b0b8ff6a
Author: Jiri Daněk <jd...@redhat.com>
AuthorDate: Sat Jul 11 13:40:05 2020 +0200

    PROTON-2252 Fix Coverity warning of buffer overrun in pn_proactor_addr (#267)
---
 c/src/proactor/proactor-internal.c | 9 +--------
 c/tests/proactor_test.cpp          | 3 +++
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/c/src/proactor/proactor-internal.c b/c/src/proactor/proactor-internal.c
index bc597e8..e645ae9 100644
--- a/c/src/proactor/proactor-internal.c
+++ b/c/src/proactor/proactor-internal.c
@@ -39,14 +39,7 @@ static const char *AMQPS_PORT_NAME = "amqps";
 const char *PNI_IO_CONDITION = "proton:io";
 
 int pn_proactor_addr(char *buf, size_t len, const char *host, const char *port) {
-  /* Don't use snprintf, Windows is not C99 compliant and snprintf is broken. */
-  if (buf && len > 0) {
-    buf[0] = '\0';
-    if (host) strncat(buf, host, len);
-    strncat(buf, ":", len);
-    if (port) strncat(buf, port, len);
-  }
-  return (host ? strlen(host) : 0) + (port ? strlen(port) : 0) + 1;
+  return snprintf(buf, len, "%s:%s", host ? host : "", port ? port : "");
 }
 
 int pni_parse_addr(const char *addr, char *buf, size_t len, const char **host, const char **port)
diff --git a/c/tests/proactor_test.cpp b/c/tests/proactor_test.cpp
index aa0ab57..33906d8 100644
--- a/c/tests/proactor_test.cpp
+++ b/c/tests/proactor_test.cpp
@@ -567,6 +567,9 @@ TEST_CASE("proactor_ssl") {
 
 TEST_CASE("proactor_addr") {
   /* Test the address formatter */
+  CHECK(1 == pn_proactor_addr(NULL, 0, "", ""));
+  CHECK(7 == pn_proactor_addr(NULL, 0, "foo", "bar"));
+
   char addr[PN_MAX_ADDR];
   pn_proactor_addr(addr, sizeof(addr), "foo", "bar");
   CHECK_THAT("foo:bar", Equals(addr));


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org