diff --git a/ipc/native/src/mock/source/hitrace_invoker.cpp b/ipc/native/src/mock/source/hitrace_invoker.cpp index 4f7f7c3771366c3fabb900c2351577d4be2933e9..417cbfb354255ac44e5a2d67b4697069d66c0e72 100644 --- a/ipc/native/src/mock/source/hitrace_invoker.cpp +++ b/ipc/native/src/mock/source/hitrace_invoker.cpp @@ -108,10 +108,14 @@ bool HitraceInvoker::TraceServerReceieve(int32_t handle, uint32_t code, Parcel & if (isServerTraced) { size_t oldReadPosition = data.GetReadPosition(); // padded size(4 bytes) of uint8_t + if (data.GetDataSize() < PADDED_SIZE_OF_PARCEL) { + ZLOGE(TRACE_LABEL, "The size of the data packet is less than 4"); + return false; + } data.RewindRead(data.GetDataSize() - PADDED_SIZE_OF_PARCEL); // the padded size of traceid uint8_t idLen = data.ReadUint8(); - if (idLen >= sizeof(HiTraceIdStruct)) { + if ((idLen >= sizeof(HiTraceIdStruct)) && (idLen <= (data.GetDataSize() - PADDED_SIZE_OF_PARCEL))) { // padded size(4 bytes) of uint8_t data.RewindRead(data.GetDataSize() - PADDED_SIZE_OF_PARCEL - idLen); const uint8_t *idBytes = data.ReadUnpadBuffer(sizeof(HiTraceIdStruct));