diff options
author | Jizhou Liao <Jizhou.Liao@nxp.com> | 2015-06-02 15:33:54 -0700 |
---|---|---|
committer | Jizhou Liao <Jizhou.Liao@nxp.com> | 2015-07-10 14:11:19 -0700 |
commit | a1ce313dd04f4257232eecd3787c33f19a27dd6c (patch) | |
tree | 75197af0c9664ce99093415ade4b659c2bcdd482 | |
parent | d7824df659f6f4612efbc1debc76b400dde6fbeb (diff) | |
download | libnfc-nci-a1ce313dd04f4257232eecd3787c33f19a27dd6c.tar.gz |
Memory leak and NULL pointer check fixes
Change-Id: Idf720890d5b0307d22407b3a28929b8a72d4404f
-rw-r--r-- | src/nfa/dm/nfa_dm_act.c | 5 | ||||
-rw-r--r-- | src/nfa/rw/nfa_rw_act.c | 5 | ||||
-rw-r--r-- | src/nfc/tags/rw_i93.c | 7 | ||||
-rw-r--r-- | src/nfc/tags/rw_t1t.c | 6 | ||||
-rw-r--r-- | src/nfc/tags/rw_t2t.c | 7 |
5 files changed, 30 insertions, 0 deletions
diff --git a/src/nfa/dm/nfa_dm_act.c b/src/nfa/dm/nfa_dm_act.c index 242963f..58ebfab 100644 --- a/src/nfa/dm/nfa_dm_act.c +++ b/src/nfa/dm/nfa_dm_act.c @@ -1630,6 +1630,11 @@ static void nfa_dm_poll_disc_cback (tNFA_DM_RF_DISC_EVT event, tNFC_DISCOVER *p_ { /* activate LLCP */ nfa_p2p_activate_llcp (p_data); + if (nfa_dm_cb.p_activate_ntf) + { + GKI_freebuf (nfa_dm_cb.p_activate_ntf); + nfa_dm_cb.p_activate_ntf = NULL; + } } else { diff --git a/src/nfa/rw/nfa_rw_act.c b/src/nfa/rw/nfa_rw_act.c index 7418ed1..8ef1b31 100644 --- a/src/nfa/rw/nfa_rw_act.c +++ b/src/nfa/rw/nfa_rw_act.c @@ -2584,6 +2584,11 @@ BOOLEAN nfa_rw_activate_ntf(tNFA_RW_MSG *p_data) &&(nfa_rw_cb.pa_sel_res == NFC_SEL_RES_NFC_FORUM_T2T) ) { /* Type 2 tag is wake up from HALT State */ + if(nfa_dm_cb.p_activate_ntf != NULL) + { + GKI_freebuf (nfa_dm_cb.p_activate_ntf); + nfa_dm_cb.p_activate_ntf = NULL; + } NFA_TRACE_DEBUG0("nfa_rw_activate_ntf () - Type 2 tag wake up from HALT State"); return TRUE; } diff --git a/src/nfc/tags/rw_i93.c b/src/nfc/tags/rw_i93.c index d77b231..acdbcb7 100644 --- a/src/nfc/tags/rw_i93.c +++ b/src/nfc/tags/rw_i93.c @@ -3080,6 +3080,13 @@ static void rw_i93_data_cback (UINT8 conn_id, tNFC_CONN_EVT event, tNFC_CONN *p_ } else { + /* free retry buffer */ + if (p_i93->p_retry_cmd) + { + GKI_freebuf (p_i93->p_retry_cmd); + p_i93->p_retry_cmd = NULL; + p_i93->retry_count = 0; + } NFC_SetStaticRfCback (NULL); p_i93->state = RW_I93_STATE_NOT_ACTIVATED; } diff --git a/src/nfc/tags/rw_t1t.c b/src/nfc/tags/rw_t1t.c index e7d373e..a7a8001 100644 --- a/src/nfc/tags/rw_t1t.c +++ b/src/nfc/tags/rw_t1t.c @@ -295,6 +295,12 @@ void rw_t1t_conn_cback (UINT8 conn_id, tNFC_CONN_EVT event, tNFC_CONN *p_data) { rw_t1t_process_error (); } + if((p_data != NULL) && (p_data->data.p_data != NULL)) + { + /* Free the response buffer in case of invalid response*/ + GKI_freebuf((BT_HDR *) (p_data->data.p_data)); + p_data->data.p_data = NULL; + } break; default: diff --git a/src/nfc/tags/rw_t2t.c b/src/nfc/tags/rw_t2t.c index de2de64..e6f5b5b 100644 --- a/src/nfc/tags/rw_t2t.c +++ b/src/nfc/tags/rw_t2t.c @@ -346,6 +346,13 @@ void rw_t2t_conn_cback (UINT8 conn_id, tNFC_CONN_EVT event, tNFC_CONN *p_data) { rw_t2t_process_error (); } + /* Free the response buffer in case of invalid response*/ + if((p_data != NULL) && (p_data->data.p_data != NULL)) + { + /* Free the response buffer in case of invalid response*/ + GKI_freebuf((BT_HDR *) (p_data->data.p_data)); + p_data->data.p_data = NULL; + } break; default: |