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