From 2e2afadd535ad3a92246fd3482f39a9174d814e9 Mon Sep 17 00:00:00 2001 From: Nick Kralevich Date: Tue, 17 Jul 2012 09:28:13 -0700 Subject: phFriNfc_OvrHal: fix memcpy overlap Don't use the API workaround when OvrHal->TranceiveInfo.sRecvData.buffer == pRecvdata->buffer. When memcpy overlap detection is enabled, this causes the NFC process to crash and burn. memcpy is undefined when src=dest. Bug: 6826770 Change-Id: Iebc8f82a4f86d560e764cef2229a7f86fa642783 --- src/phFriNfc_OvrHal.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/phFriNfc_OvrHal.c b/src/phFriNfc_OvrHal.c index 539210e..9efff94 100644 --- a/src/phFriNfc_OvrHal.c +++ b/src/phFriNfc_OvrHal.c @@ -323,7 +323,10 @@ static void phFriNfc_OvrHal_CB_Transceive(void *context, if(NULL != pRecvdata && OvrHal->TranceiveInfo.sRecvData.buffer != NULL && pRecvdata->buffer != NULL) { /* Work-around for the NFCIP Tranceive API */ - memcpy(OvrHal->TranceiveInfo.sRecvData.buffer, pRecvdata->buffer, pRecvdata->length); + if (OvrHal->TranceiveInfo.sRecvData.buffer != pRecvdata->buffer) + { + memcpy(OvrHal->TranceiveInfo.sRecvData.buffer, pRecvdata->buffer, pRecvdata->length); + } if (OvrHal->pndef_recv_length != NULL) { *OvrHal->pndef_recv_length = (uint16_t) pRecvdata->length; -- cgit v1.1