Skip to content

Commit baefabc

Browse files
authored
Merge pull request #523 from uyjulian/network_nullpo_check
Add null pointer checks on network mailbox code
2 parents 6f160a0 + 46a221b commit baefabc

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

ee/network/tcpip/src/sys_arch.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ static void RetrieveMbxInternal(sys_mbox_t mBox, arch_message **message)
197197
*message=mBox->FirstMessage; //Take first message in mbox
198198

199199
//The next message is next. If there is no next message, NULL is assigned,
200-
NextMessage=(unsigned int)(*message)->next!=0xFFFFFFFF?(*message)->next:NULL;
200+
NextMessage=((*message != NULL) && ((unsigned int)(*message)->next!=0xFFFFFFFF))?(*message)->next:NULL;
201201

202202
//if the mbox only had one message, then update LastMessage as well.
203203
if(mBox->FirstMessage == mBox->LastMessage)
@@ -275,6 +275,8 @@ static u32_t sys_arch_mbox_fetch_internal(sys_mbox_t pMBox, void** ppvMSG, u32_t
275275
unsigned int TimeElasped;
276276
int result;
277277

278+
pmsg = NULL;
279+
result = -1;
278280
TimeElasped=0;
279281
if(block){
280282
int start;
@@ -292,8 +294,11 @@ static u32_t sys_arch_mbox_fetch_internal(sys_mbox_t pMBox, void** ppvMSG, u32_t
292294
}
293295

294296
if(result==0){
295-
if(ppvMSG!=NULL) *ppvMSG = pmsg->sys_msg;
296-
free_msg(pmsg);
297+
if (pmsg != NULL)
298+
{
299+
if(ppvMSG!=NULL) *ppvMSG = pmsg->sys_msg;
300+
free_msg(pmsg);
301+
}
297302
}
298303

299304
//Return the number of msec waited.

iop/tcpip/tcpip-base/sys_arch.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,8 @@ static u32_t sys_arch_mbox_fetch_internal(sys_mbox_t pMBox, void** ppvMSG, u32_t
204204
iop_sys_clock_t End;
205205
int result;
206206

207+
pmsg = 0;
208+
result = -1;
207209
if(block){
208210
int iPID;
209211

@@ -231,8 +233,11 @@ static u32_t sys_arch_mbox_fetch_internal(sys_mbox_t pMBox, void** ppvMSG, u32_t
231233
}
232234

233235
if(result==0){
234-
*ppvMSG = ((arch_message *)pmsg)->sys_msg;
235-
free_msg((arch_message *) pmsg);
236+
if (pmsg != NULL)
237+
{
238+
*ppvMSG = ((arch_message *)pmsg)->sys_msg;
239+
free_msg((arch_message *) pmsg);
240+
}
236241
}
237242

238243
//Return the number of msec waited.

0 commit comments

Comments
 (0)