[Edge] handle invalid port number
authorJaeyun <jy1210.jung@samsung.com>
Wed, 3 Aug 2022 11:32:43 +0000 (20:32 +0900)
committerjaeyun-jung <39614140+jaeyun-jung@users.noreply.github.com>
Thu, 4 Aug 2022 08:16:11 +0000 (17:16 +0900)
Add error case if given port number is invalid.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
src/libnnstreamer-edge/nnstreamer-edge-internal.c
tests/unittest_nnstreamer-edge.cc

index 1ac8fd7efcee9350280f675de8a62daa8e898fda..995177bbd3fecd6ba6ed5dbf7b6cf94039e44038 100644 (file)
@@ -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);
index 390f0b05904bb9c36040f6631b1c432bfc47855d..95345dc0824fdf0b09669e32d0ed76cc1c356adb 100644 (file)
@@ -574,6 +574,33 @@ TEST(edge, connectInvalidParam04_n)
   EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
 }\r
 \r
+/**\r
+ * @brief Connect - invalid param.\r
+ */\r
+TEST(edge, connectInvalidParam05_n)\r
+{\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", NNS_EDGE_CONNECT_TYPE_TCP,\r
+      (NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND), &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_set_event_callback (edge_h, _test_edge_event_cb, NULL);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  /* Invalid port number */\r
+  ret = nns_edge_connect (edge_h, "127.0.0.1", -1);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+  ret = nns_edge_connect (edge_h, "127.0.0.1", 0);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+  ret = nns_edge_connect (edge_h, "127.0.0.1", 77777);\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
 /**\r
  * @brief Disconnect - invalid param.\r
  */\r
@@ -918,6 +945,30 @@ TEST(edge, setInfoInvalidParam07_n)
   EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
 }\r
 \r
+/**\r
+ * @brief Set info - invalid param.\r
+ */\r
+TEST(edge, setInfoInvalidParam08_n)\r
+{\r
+  nns_edge_h edge_h;\r
+  int ret;\r
+\r
+  ret = nns_edge_create_handle ("temp-id", NNS_EDGE_CONNECT_TYPE_TCP,\r
+      (NNS_EDGE_FLAG_RECV | NNS_EDGE_FLAG_SEND), &edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  /* Invalid port number */\r
+  ret = nns_edge_set_info (edge_h, "port", "-1");\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+  ret = nns_edge_set_info (edge_h, "port", "0");\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+  ret = nns_edge_set_info (edge_h, "port", "77777");\r
+  EXPECT_NE (ret, NNS_EDGE_ERROR_NONE);\r
+\r
+  ret = nns_edge_release_handle (edge_h);\r
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);\r
+}\r
+\r
 /**\r
  * @brief Create edge-data - invalid param.\r
  */\r