mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2024-11-23 01:49:53 +03:00
Merge PR #841: Mayaqua: fix segmentation fault, add new FreeSafe() function
This commit is contained in:
commit
3c3aa900b6
@ -3777,6 +3777,13 @@ void Free(void *addr)
|
|||||||
InternalFree(tag);
|
InternalFree(tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Free and set pointer's value to NULL
|
||||||
|
void FreeSafe(void **addr)
|
||||||
|
{
|
||||||
|
Free(*addr);
|
||||||
|
*addr = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// Check the memtag
|
// Check the memtag
|
||||||
void CheckMemTag(MEMTAG *tag)
|
void CheckMemTag(MEMTAG *tag)
|
||||||
{
|
{
|
||||||
|
@ -276,6 +276,7 @@ void *ZeroMalloc(UINT size);
|
|||||||
void *ZeroMallocEx(UINT size, bool zero_clear_when_free);
|
void *ZeroMallocEx(UINT size, bool zero_clear_when_free);
|
||||||
void *ReAlloc(void *addr, UINT size);
|
void *ReAlloc(void *addr, UINT size);
|
||||||
void Free(void *addr);
|
void Free(void *addr);
|
||||||
|
void FreeSafe(void **addr);
|
||||||
void CheckMemTag(MEMTAG *tag);
|
void CheckMemTag(MEMTAG *tag);
|
||||||
UINT GetMemSize(void *addr);
|
UINT GetMemSize(void *addr);
|
||||||
|
|
||||||
|
@ -20563,13 +20563,15 @@ HTTP_HEADER *RecvHttpHeader(SOCK *s)
|
|||||||
|
|
||||||
// Split into tokens
|
// Split into tokens
|
||||||
token = ParseToken(str, " ");
|
token = ParseToken(str, " ");
|
||||||
|
|
||||||
|
FreeSafe((void **)&str);
|
||||||
|
|
||||||
if (token->NumTokens < 3)
|
if (token->NumTokens < 3)
|
||||||
{
|
{
|
||||||
goto LABEL_ERROR;
|
FreeToken(token);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
Free(str);
|
|
||||||
|
|
||||||
// Creating a header object
|
// Creating a header object
|
||||||
header = NewHttpHeader(token->Token[0], token->Token[1], token->Token[2]);
|
header = NewHttpHeader(token->Token[0], token->Token[1], token->Token[2]);
|
||||||
FreeToken(token);
|
FreeToken(token);
|
||||||
@ -20588,27 +20590,21 @@ HTTP_HEADER *RecvHttpHeader(SOCK *s)
|
|||||||
if (IsEmptyStr(str))
|
if (IsEmptyStr(str))
|
||||||
{
|
{
|
||||||
// End of header
|
// End of header
|
||||||
Free(str);
|
FreeSafe((void **)&str);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AddHttpValueStr(header, str) == false)
|
if (AddHttpValueStr(header, str) == false)
|
||||||
{
|
{
|
||||||
goto LABEL_ERROR;
|
FreeSafe((void **)&str);
|
||||||
|
FreeHttpHeader(header);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Free(str);
|
FreeSafe((void **)&str);
|
||||||
}
|
}
|
||||||
|
|
||||||
return header;
|
return header;
|
||||||
|
|
||||||
LABEL_ERROR:
|
|
||||||
// Memory release
|
|
||||||
Free(str);
|
|
||||||
FreeToken(token);
|
|
||||||
FreeHttpHeader(header);
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Receive a line
|
// Receive a line
|
||||||
|
Loading…
Reference in New Issue
Block a user