diff --git a/services/local_code_sign/src/local_sign_key.cpp b/services/local_code_sign/src/local_sign_key.cpp index 4d4fcd5a036c2ae986cc6ee863075c0cf8579b27..836b79417b1b4a6c8339f003115f77a850e226c5 100644 --- a/services/local_code_sign/src/local_sign_key.cpp +++ b/services/local_code_sign/src/local_sign_key.cpp @@ -329,12 +329,14 @@ bool LocalSignKey::SignByHUKS(const struct HksBlob *inData, struct HksBlob *outD tmpOutData.data = static_cast(malloc(tmpOutData.size)); if (tmpOutData.data == nullptr) { LOG_ERROR("Alloc memory for blob failed."); + HksAbort(&handle, paramSet.GetParamSet()); return false; } ret = HksUpdate(&handle, paramSet.GetParamSet(), inData, &tmpOutData); if (ret != HKS_SUCCESS) { LOG_ERROR("HksUpdate Failed."); free(tmpOutData.data); + HksAbort(&handle, paramSet.GetParamSet()); return false; } // third stage: finish, get signature from HUKS diff --git a/test/unittest/mock/include/hks_api.h b/test/unittest/mock/include/hks_api.h index a783ee3628ef06e0b4e1bcf99b8e659d94d391ad..2573798ffa5462bfd89d5e6a8d93c7f2cb483bcb 100644 --- a/test/unittest/mock/include/hks_api.h +++ b/test/unittest/mock/include/hks_api.h @@ -47,6 +47,8 @@ int32_t HksUpdate(const struct HksBlob *handle, const struct HksParamSet *paramS int32_t HksFinish(const struct HksBlob *handle, const struct HksParamSet *paramSet, const struct HksBlob *inData, struct HksBlob *outData); + +int32_t HksAbort(const struct HksBlob *handle, const struct HksParamSet *paramSet); } } } diff --git a/test/unittest/mock/src/hks_api.cpp b/test/unittest/mock/src/hks_api.cpp index 828acb38edcba9229fe3d6b42c9dbd381b74fb3e..da4b1c3e45ee4ea3cc4e24314e5e97daa8fb648d 100644 --- a/test/unittest/mock/src/hks_api.cpp +++ b/test/unittest/mock/src/hks_api.cpp @@ -67,6 +67,12 @@ int32_t HksFinish(const struct HksBlob *handle, const struct HksParamSet *paramS LOG_INFO("Mock HksFinish"); return HKS_SUCCESS; } + +int32_t HksAbort(const struct HksBlob *handle, const struct HksParamSet *paramSet) +{ + LOG_INFO("Mock HksAbort"); + return HKS_SUCCESS; +} } } } \ No newline at end of file diff --git a/test/unittest/mock/src/hks_api_mock_test.cpp b/test/unittest/mock/src/hks_api_mock_test.cpp index 74df370cdeac3844da8504817b6984b1d3ec7612..91e10fc6fd4e70b84fbb17c0bb046e9144c17959 100644 --- a/test/unittest/mock/src/hks_api_mock_test.cpp +++ b/test/unittest/mock/src/hks_api_mock_test.cpp @@ -89,6 +89,12 @@ int32_t HksFinish(const struct HksBlob *handle, const struct HksParamSet *paramS } return HKS_SUCCESS; } + +int32_t HksAbort(const struct HksBlob *handle, const struct HksParamSet *paramSet) +{ + LOG_INFO("Mock HksAbort"); + return HKS_SUCCESS; +} } } } \ No newline at end of file