diff --git a/uhdf2/hdi/src/servmgr_client.c b/uhdf2/hdi/src/servmgr_client.c index 2a5c4e2dcd3041c3a0b1585e29d119781e821e2e..3c52d398a48d71479f99eca7992af6e79c92fee2 100644 --- a/uhdf2/hdi/src/servmgr_client.c +++ b/uhdf2/hdi/src/servmgr_client.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -93,6 +93,7 @@ int32_t HDIServMgrRegisterServiceStatusListener(struct HDIServiceManager *self, if (!HdfRemoteServiceWriteInterfaceToken(servMgrClient->remote, data) || !HdfSbufWriteUint16(data, deviceClass) || ServiceStatusListenerMarshalling(listener, data) != HDF_SUCCESS) { + HdfSbufRecycle(data); return HDF_FAILURE; } @@ -118,6 +119,7 @@ int32_t HDIServMgrUnregisterServiceStatusListener(struct HDIServiceManager *self if (!HdfRemoteServiceWriteInterfaceToken(servMgrClient->remote, data) || ServiceStatusListenerMarshalling(listener, data) != HDF_SUCCESS) { + HdfSbufRecycle(data); return HDF_FAILURE; } @@ -153,6 +155,7 @@ struct HDIServiceManager *HDIServiceManagerGet(void) if (!HdfRemoteServiceSetInterfaceDesc(remote, "HDI.IServiceManager.V1_0")) { HDF_LOGE("%{public}s: failed to init interface desc", __func__); HdfRemoteServiceRecycle(remote); + OsalMemFree(iServMgrClient); return NULL; } iServMgrClient->remote = remote; diff --git a/uhdf2/manager/src/servstat_listener_holder.c b/uhdf2/manager/src/servstat_listener_holder.c index 52928d519b20d9e4e6189b97620f15be589b896e..8cd6a434650f029b094781579881151c4ec397f3 100644 --- a/uhdf2/manager/src/servstat_listener_holder.c +++ b/uhdf2/manager/src/servstat_listener_holder.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Huawei Device Co., Ltd. + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -86,13 +86,13 @@ int32_t UServStatListenerHolderNotifyStatus(struct ServStatListenerHolder *holde SERVIE_STATUS_LISTENER_NOTIFY, data, NULL); if (ret != HDF_SUCCESS) { HDF_LOGE("failed to notify service status, dispatch error"); + HdfSbufRecycle(data); return HDF_FAILURE; } else { HDF_LOGD("notify service status success"); + HdfSbufRecycle(data); return HDF_SUCCESS; } - HdfSbufRecycle(data); - return HDF_SUCCESS; } void UServStatListenerHolderRecycle(struct ServStatListenerHolder *holder)