From: Jaeyun Jung Date: Tue, 5 Mar 2024 04:49:04 +0000 (+0900) Subject: [Service] condition to validate handle X-Git-Tag: accepted/tizen/unified/20240319.020733~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cc6f57cf2d4792f1858e7cf0f508b3c48f9c0d2f;p=platform%2Fcore%2Fapi%2Fmachine-learning.git [Service] condition to validate handle Check priv data when validating ml-service handle. Signed-off-by: Jaeyun Jung --- diff --git a/c/src/ml-api-service-common.c b/c/src/ml-api-service-common.c index da85c95..8c91aff 100644 --- a/c/src/ml-api-service-common.c +++ b/c/src/ml-api-service-common.c @@ -28,6 +28,18 @@ _ml_service_handle_is_valid (ml_service_s * mls) if (mls->magic != ML_SERVICE_MAGIC) return FALSE; + switch (mls->type) { + case ML_SERVICE_TYPE_SERVER_PIPELINE: + case ML_SERVICE_TYPE_CLIENT_QUERY: + case ML_SERVICE_TYPE_REMOTE: + if (mls->priv == NULL) + return FALSE; + break; + default: + /* Invalid handle type. */ + return FALSE; + } + return TRUE; } diff --git a/tests/capi/unittest_capi_service_agent_client.cc b/tests/capi/unittest_capi_service_agent_client.cc index 67eb75a..eef0c7c 100644 --- a/tests/capi/unittest_capi_service_agent_client.cc +++ b/tests/capi/unittest_capi_service_agent_client.cc @@ -500,16 +500,26 @@ TEST_F (MLServiceAgentTest, destroy_00_n) TEST_F (MLServiceAgentTest, destroy_01_n) { int status; - ml_service_s *mls = _ml_service_create_internal (ML_SERVICE_TYPE_SERVER_PIPELINE); - ASSERT_TRUE (mls != NULL); + ml_service_h h; + + status = ml_service_set_pipeline ("key", "videotestsrc ! fakesink"); + EXPECT_EQ (ML_ERROR_NONE, status); + + status = ml_service_launch_pipeline ("key", &h); + EXPECT_EQ (ML_ERROR_NONE, status); + + ml_service_s *mls = (ml_service_s *) h; /* invalid type */ mls->type = ML_SERVICE_TYPE_MAX; - status = ml_service_destroy ((ml_service_h) mls); + status = ml_service_destroy (h); EXPECT_EQ (ML_ERROR_INVALID_PARAMETER, status); mls->type = ML_SERVICE_TYPE_SERVER_PIPELINE; - status = ml_service_destroy ((ml_service_h) mls); + status = ml_service_destroy (h); + EXPECT_EQ (ML_ERROR_NONE, status); + + status = ml_service_delete_pipeline ("key"); EXPECT_EQ (ML_ERROR_NONE, status); }