summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJizhou Liao <Jizhou.Liao@nxp.com>2015-06-02 15:33:54 -0700
committerJizhou Liao <Jizhou.Liao@nxp.com>2015-07-10 14:11:19 -0700
commita1ce313dd04f4257232eecd3787c33f19a27dd6c (patch)
tree75197af0c9664ce99093415ade4b659c2bcdd482
parentd7824df659f6f4612efbc1debc76b400dde6fbeb (diff)
downloadlibnfc-nci-a1ce313dd04f4257232eecd3787c33f19a27dd6c.tar.gz
Memory leak and NULL pointer check fixes
Change-Id: Idf720890d5b0307d22407b3a28929b8a72d4404f
-rw-r--r--src/nfa/dm/nfa_dm_act.c5
-rw-r--r--src/nfa/rw/nfa_rw_act.c5
-rw-r--r--src/nfc/tags/rw_i93.c7
-rw-r--r--src/nfc/tags/rw_t1t.c6
-rw-r--r--src/nfc/tags/rw_t2t.c7
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: