From: Jaeyun Date: Wed, 3 Aug 2022 11:32:43 +0000 (+0900) Subject: [Edge] handle invalid port number X-Git-Tag: submit/tizen/20220810.074948~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=084038a2d9afdd1048b16e9e6a5c24c085f517fc;p=platform%2Fupstream%2Fnnstreamer-edge.git [Edge] handle invalid port number Add error case if given port number is invalid. Signed-off-by: Jaeyun --- diff --git a/src/libnnstreamer-edge/nnstreamer-edge-internal.c b/src/libnnstreamer-edge/nnstreamer-edge-internal.c index 1ac8fd7..995177b 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-internal.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-internal.c @@ -1143,6 +1143,11 @@ nns_edge_connect (nns_edge_h edge_h, const char *dest_host, int dest_port) return NNS_EDGE_ERROR_INVALID_PARAMETER; } + if (dest_port <= 0 || dest_port > 65535) { + nns_edge_loge ("Invalid port number %d.", dest_port); + return NNS_EDGE_ERROR_INVALID_PARAMETER; + } + nns_edge_lock (eh); if (!NNS_EDGE_MAGIC_IS_VALID (eh)) { @@ -1391,7 +1396,14 @@ nns_edge_set_info (nns_edge_h edge_h, const char *key, const char *value) SAFE_FREE (eh->host); eh->host = nns_edge_strdup (value); } else if (0 == strcasecmp (key, "PORT")) { - eh->port = (int) strtoll (value, NULL, 10); + int port = (int) strtoll (value, NULL, 10); + + if (port <= 0 || port > 65535) { + nns_edge_loge ("Invalid port number %d.", port); + ret = NNS_EDGE_ERROR_INVALID_PARAMETER; + } else { + eh->port = port; + } } else if (0 == strcasecmp (key, "TOPIC")) { SAFE_FREE (eh->topic); eh->topic = nns_edge_strdup (value); diff --git a/tests/unittest_nnstreamer-edge.cc b/tests/unittest_nnstreamer-edge.cc index 390f0b0..95345dc 100644 --- a/tests/unittest_nnstreamer-edge.cc +++ b/tests/unittest_nnstreamer-edge.cc @@ -574,6 +574,33 @@ TEST(edge, connectInvalidParam04_n) EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); } +/** + * @brief Connect - invalid param. + */ +TEST(edge, connectInvalidParam05_n) +{ + nns_edge_h edge_h; + int ret; + + ret = nns_edge_create_handle ("temp-id", NNS_EDGE_CONNECT_TYPE_TCP, + (NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND), &edge_h); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); + + ret = nns_edge_set_event_callback (edge_h, _test_edge_event_cb, NULL); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); + + /* Invalid port number */ + ret = nns_edge_connect (edge_h, "127.0.0.1", -1); + EXPECT_NE (ret, NNS_EDGE_ERROR_NONE); + ret = nns_edge_connect (edge_h, "127.0.0.1", 0); + EXPECT_NE (ret, NNS_EDGE_ERROR_NONE); + ret = nns_edge_connect (edge_h, "127.0.0.1", 77777); + EXPECT_NE (ret, NNS_EDGE_ERROR_NONE); + + ret = nns_edge_release_handle (edge_h); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); +} + /** * @brief Disconnect - invalid param. */ @@ -918,6 +945,30 @@ TEST(edge, setInfoInvalidParam07_n) EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); } +/** + * @brief Set info - invalid param. + */ +TEST(edge, setInfoInvalidParam08_n) +{ + nns_edge_h edge_h; + int ret; + + ret = nns_edge_create_handle ("temp-id", NNS_EDGE_CONNECT_TYPE_TCP, + (NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND), &edge_h); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); + + /* Invalid port number */ + ret = nns_edge_set_info (edge_h, "port", "-1"); + EXPECT_NE (ret, NNS_EDGE_ERROR_NONE); + ret = nns_edge_set_info (edge_h, "port", "0"); + EXPECT_NE (ret, NNS_EDGE_ERROR_NONE); + ret = nns_edge_set_info (edge_h, "port", "77777"); + EXPECT_NE (ret, NNS_EDGE_ERROR_NONE); + + ret = nns_edge_release_handle (edge_h); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); +} + /** * @brief Create edge-data - invalid param. */