From 70ffc21ad36e4c9e230c0b2cc88398b56500c282 Mon Sep 17 00:00:00 2001 From: zhang Date: Tue, 5 Jul 2022 14:08:09 +0800 Subject: [PATCH] fix: resolve the memory free problem of the service status notification module Signed-off-by: zhang --- uhdf2/hdi/src/servmgr_client.c | 5 ++++- uhdf2/manager/src/servstat_listener_holder.c | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/uhdf2/hdi/src/servmgr_client.c b/uhdf2/hdi/src/servmgr_client.c index 2a5c4e2..3c52d39 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 52928d5..8cd6a43 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) -- Gitee