From 60b9aa1c1e9eb29a73ba82918717350f43486dd7 Mon Sep 17 00:00:00 2001 From: Rafal Rudnicki Date: Mon, 8 Apr 2024 16:37:19 +0200 Subject: [PATCH] check for null dereference in trackingOpenIpcHandle --- src/provider/provider_tracking.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/provider/provider_tracking.c b/src/provider/provider_tracking.c index 5f28397da..1d72b9861 100644 --- a/src/provider/provider_tracking.c +++ b/src/provider/provider_tracking.c @@ -586,17 +586,23 @@ static umf_result_t trackingOpenIpcHandle(void *provider, void *providerIpcData, (umf_tracking_memory_provider_t *)provider; umf_result_t ret = UMF_RESULT_SUCCESS; + if (p->hUpstream == NULL) { + LOG_ERR("tracking open ipc handle failed: no upstream provider"); + return UMF_RESULT_ERROR_INVALID_ARGUMENT; + } + ret = umfMemoryProviderOpenIPCHandle(p->hUpstream, providerIpcData, ptr); if (ret != UMF_RESULT_SUCCESS) { return ret; } size_t bufferSize = getDataSizeFromIpcHandle(providerIpcData); ret = umfMemoryTrackerAdd(p->hTracker, p->pool, *ptr, bufferSize); - if (ret != UMF_RESULT_SUCCESS && p->hUpstream) { + if (ret != UMF_RESULT_SUCCESS) { if (umfMemoryProviderCloseIPCHandle(p->hUpstream, *ptr)) { - // TODO: LOG + LOG_ERR("failed to close IPC handle"); } } + return ret; }