From: hyeonseok lee Date: Wed, 8 Feb 2023 09:43:33 +0000 (+0900) Subject: [UTC][nntrainer][Non-ACR] handle heap use after free X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=db2ad084c8bd8155b70d92bf424eb57f8ff61e40;p=test%2Ftct%2Fnative%2Fapi.git [UTC][nntrainer][Non-ACR] handle heap use after free - Remove utc_nntrainer_model_get_input/output_tensors_info_n3 testcases. This test cause heap use after free error. - Added model construct function. Change-Id: I1f3989c9286bd48050d0bf077d2e0b9b01ffe9e3 Signed-off-by: hyeonseok lee --- diff --git a/src/utc/nntrainer/tct-nntrainer-core_mobile.h b/src/utc/nntrainer/tct-nntrainer-core_mobile.h index 8e4fa63f0..c0c5f4915 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_mobile.h +++ b/src/utc/nntrainer/tct-nntrainer-core_mobile.h @@ -145,11 +145,9 @@ extern int utc_nntrainer_layer_set_property_loss_cross_entropy_softmax_n(void); extern int utc_nntrainer_model_get_input_tensors_info_p(void); extern int utc_nntrainer_model_get_input_tensors_info_n1(void); extern int utc_nntrainer_model_get_input_tensors_info_n2(void); -extern int utc_nntrainer_model_get_input_tensors_info_n3(void); extern int utc_nntrainer_model_get_output_tensors_info_p(void); extern int utc_nntrainer_model_get_output_tensors_info_n1(void); extern int utc_nntrainer_model_get_output_tensors_info_n2(void); -extern int utc_nntrainer_model_get_output_tensors_info_n3(void); extern int utc_nntrainer_model_get_layer_p1(void); extern int utc_nntrainer_model_get_layer_n1(void); extern int utc_nntrainer_model_get_layer_p2(void); @@ -292,11 +290,9 @@ testcase tc_array[] = { {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_p1", utc_nntrainer_model_get_layer_p1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_n1", utc_nntrainer_model_get_layer_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_p2", utc_nntrainer_model_get_layer_p2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, diff --git a/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h b/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h index 5c52a0f14..c8e46476e 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h +++ b/src/utc/nntrainer/tct-nntrainer-core_tizeniot.h @@ -146,11 +146,9 @@ extern int utc_nntrainer_layer_set_property_loss_cross_entropy_softmax_n(void); extern int utc_nntrainer_model_get_input_tensors_info_p(void); extern int utc_nntrainer_model_get_input_tensors_info_n1(void); extern int utc_nntrainer_model_get_input_tensors_info_n2(void); -extern int utc_nntrainer_model_get_input_tensors_info_n3(void); extern int utc_nntrainer_model_get_output_tensors_info_p(void); extern int utc_nntrainer_model_get_output_tensors_info_n1(void); extern int utc_nntrainer_model_get_output_tensors_info_n2(void); -extern int utc_nntrainer_model_get_output_tensors_info_n3(void); extern int utc_nntrainer_model_get_layer_p1(void); extern int utc_nntrainer_model_get_layer_n1(void); extern int utc_nntrainer_model_get_layer_p2(void); @@ -293,11 +291,9 @@ testcase tc_array[] = { {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_p1", utc_nntrainer_model_get_layer_p1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_n1", utc_nntrainer_model_get_layer_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_p2", utc_nntrainer_model_get_layer_p2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, diff --git a/src/utc/nntrainer/tct-nntrainer-core_tv.h b/src/utc/nntrainer/tct-nntrainer-core_tv.h index 231713036..ed6b80ea0 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_tv.h +++ b/src/utc/nntrainer/tct-nntrainer-core_tv.h @@ -146,11 +146,9 @@ extern int utc_nntrainer_layer_set_property_loss_cross_entropy_softmax_n(void); extern int utc_nntrainer_model_get_input_tensors_info_p(void); extern int utc_nntrainer_model_get_input_tensors_info_n1(void); extern int utc_nntrainer_model_get_input_tensors_info_n2(void); -extern int utc_nntrainer_model_get_input_tensors_info_n3(void); extern int utc_nntrainer_model_get_output_tensors_info_p(void); extern int utc_nntrainer_model_get_output_tensors_info_n1(void); extern int utc_nntrainer_model_get_output_tensors_info_n2(void); -extern int utc_nntrainer_model_get_output_tensors_info_n3(void); extern int utc_nntrainer_model_get_layer_p1(void); extern int utc_nntrainer_model_get_layer_n1(void); extern int utc_nntrainer_model_get_layer_p2(void); @@ -293,11 +291,9 @@ testcase tc_array[] = { {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_p1", utc_nntrainer_model_get_layer_p1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_n1", utc_nntrainer_model_get_layer_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_p2", utc_nntrainer_model_get_layer_p2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, diff --git a/src/utc/nntrainer/tct-nntrainer-core_wearable.h b/src/utc/nntrainer/tct-nntrainer-core_wearable.h index 4d424df41..8a1550e2f 100644 --- a/src/utc/nntrainer/tct-nntrainer-core_wearable.h +++ b/src/utc/nntrainer/tct-nntrainer-core_wearable.h @@ -146,11 +146,9 @@ extern int utc_nntrainer_layer_set_property_loss_cross_entropy_softmax_n(void); extern int utc_nntrainer_model_get_input_tensors_info_p(void); extern int utc_nntrainer_model_get_input_tensors_info_n1(void); extern int utc_nntrainer_model_get_input_tensors_info_n2(void); -extern int utc_nntrainer_model_get_input_tensors_info_n3(void); extern int utc_nntrainer_model_get_output_tensors_info_p(void); extern int utc_nntrainer_model_get_output_tensors_info_n1(void); extern int utc_nntrainer_model_get_output_tensors_info_n2(void); -extern int utc_nntrainer_model_get_output_tensors_info_n3(void); extern int utc_nntrainer_model_get_layer_p1(void); extern int utc_nntrainer_model_get_layer_n1(void); extern int utc_nntrainer_model_get_layer_p2(void); @@ -293,11 +291,9 @@ testcase tc_array[] = { {"utc_nntrainer_model_get_input_tensors_info_p", utc_nntrainer_model_get_input_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_input_tensors_info_n1", utc_nntrainer_model_get_input_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_input_tensors_info_n2", utc_nntrainer_model_get_input_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_get_input_tensors_info_n3", utc_nntrainer_model_get_input_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_p", utc_nntrainer_model_get_output_tensors_info_p, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_n1", utc_nntrainer_model_get_output_tensors_info_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_output_tensors_info_n2", utc_nntrainer_model_get_output_tensors_info_n2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, - {"utc_nntrainer_model_get_output_tensors_info_n3", utc_nntrainer_model_get_output_tensors_info_n3, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_p1", utc_nntrainer_model_get_layer_p1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_n1", utc_nntrainer_model_get_layer_n1, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, {"utc_nntrainer_model_get_layer_p2", utc_nntrainer_model_get_layer_p2, utc_nntrainer_model_startup, utc_nntrainer_model_cleanup}, diff --git a/src/utc/nntrainer/utc-nntrainer-model.c b/src/utc/nntrainer/utc-nntrainer-model.c index 0d0c78703..903591a8a 100644 --- a/src/utc/nntrainer/utc-nntrainer-model.c +++ b/src/utc/nntrainer/utc-nntrainer-model.c @@ -268,6 +268,7 @@ int utc_nntrainer_model_add_layer_n1(void) int utc_nntrainer_model_add_layer_n2(void) { ml_train_model_h other_model; + ml_train_model_construct(&model); ml_train_model_construct(&other_model); ml_train_model_add_layer(other_model, layers[1]); @@ -747,30 +748,6 @@ int utc_nntrainer_model_get_input_tensors_info_n2(void) return 0; } -/** - * @function utc_nntrainer_model_get_input_tensors_info_n3 - * @since_tizen 6.5 - * @description test for get info of model's input tensors with destroyed model - */ -int utc_nntrainer_model_get_input_tensors_info_n3(void) -{ - ml_train_model_construct_with_conf(conf_path, &model); - ml_train_model_compile(model, NULL); - ml_train_model_destroy(model); - - status = ml_train_model_get_input_tensors_info(model, &input_info); - if (train_supported == false) - { - assert_eq(status, ML_ERROR_NOT_SUPPORTED); - } - else - { - assert_neq(status, ML_ERROR_NONE); - } - - return 0; -} - /** * @function utc_nntrainer_model_get_output_tensors_info_p * @since_tizen 6.5 @@ -869,30 +846,6 @@ int utc_nntrainer_model_get_output_tensors_info_n2(void) return 0; } -/** - * @function utc_nntrainer_model_get_output_tensors_info_n3 - * @since_tizen 6.5 - * @description test for get info of model's output tensors with destroyed model - */ -int utc_nntrainer_model_get_output_tensors_info_n3(void) -{ - ml_train_model_construct_with_conf(conf_path, &model); - ml_train_model_compile(model, NULL); - ml_train_model_destroy(model); - - status = ml_train_model_get_output_tensors_info(model, &output_info); - if (train_supported == false) - { - assert_eq(status, ML_ERROR_NOT_SUPPORTED); - } - else - { - assert_neq(status, ML_ERROR_NONE); - } - - return 0; -} - /** * @function utc_nntrainer_model_get_layer_p1 * @since_tizen 7.0