Changes to address issues brought up by the security review.
This commit is contained in:
@@ -73,9 +73,9 @@ typedef struct _Attribute
|
||||
{
|
||||
LIST_ENTRY listEntry;
|
||||
char *pAttribName;
|
||||
int attribNameLen;
|
||||
size_t attribNameLen;
|
||||
char *pAttribValue;
|
||||
int attribValueLen;
|
||||
size_t attribValueLen;
|
||||
|
||||
} Attribute, *PAttribute;
|
||||
|
||||
@@ -87,15 +87,15 @@ typedef struct _IdenTokenIfInstance
|
||||
{
|
||||
int refCount;
|
||||
char *pIdentId;
|
||||
int identIdLen;
|
||||
size_t identIdLen;
|
||||
char *pIdentSourceName;
|
||||
int identSourceNameLen;
|
||||
size_t identSourceNameLen;
|
||||
char *pIdentSourceUrl;
|
||||
int identSourceUrlLen;
|
||||
size_t identSourceUrlLen;
|
||||
char *pTargetService;
|
||||
int targetServiceLen;
|
||||
size_t targetServiceLen;
|
||||
char *pTargetHost;
|
||||
int targetHostLen;
|
||||
size_t targetHostLen;
|
||||
LIST_ENTRY attributeListHead;
|
||||
IdenTokenIf idenTokenIf;
|
||||
|
||||
@@ -109,7 +109,7 @@ typedef struct _IdenTokenParse
|
||||
{
|
||||
XML_Parser p;
|
||||
int state;
|
||||
int elementDataProcessed;
|
||||
size_t elementDataProcessed;
|
||||
IdenTokenIfInstance *pIdenTokenIfInstance;
|
||||
CasaStatus status;
|
||||
|
||||
@@ -377,7 +377,7 @@ ConsumeElementData(
|
||||
IN const XML_Char *s,
|
||||
IN int len,
|
||||
INOUT char **ppElementData,
|
||||
INOUT int *pElementDataLen)
|
||||
INOUT size_t *pElementDataLen)
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
@@ -424,7 +424,7 @@ ConsumeElementData(
|
||||
char *pNewBuf;
|
||||
|
||||
// We have already received token data, append this data to it.
|
||||
pNewBuf = (char*) malloc(pIdenTokenParse->elementDataProcessed + len + 1);
|
||||
pNewBuf = (char*) malloc((size_t)(pIdenTokenParse->elementDataProcessed + len + 1));
|
||||
if (pNewBuf)
|
||||
{
|
||||
memset(pNewBuf,
|
||||
@@ -860,7 +860,7 @@ CasaStatus SSCS_CALL
|
||||
GetIdentityId(
|
||||
IN const void *pIfInstance,
|
||||
INOUT char *pIdentIdBuf,
|
||||
INOUT int *pIdentIdLen)
|
||||
INOUT size_t *pIdentIdLen)
|
||||
//
|
||||
// Arguments:
|
||||
// pIfInstance -
|
||||
@@ -935,7 +935,7 @@ CasaStatus SSCS_CALL
|
||||
GetSourceName(
|
||||
IN const void *pIfInstance,
|
||||
INOUT char *pSourceNameBuf,
|
||||
INOUT int *pSourceNameLen)
|
||||
INOUT size_t *pSourceNameLen)
|
||||
//
|
||||
// Arguments:
|
||||
// pIfInstance -
|
||||
@@ -1011,7 +1011,7 @@ CasaStatus SSCS_CALL
|
||||
GetSourceUrl(
|
||||
IN const void *pIfInstance,
|
||||
INOUT char *pSourceUrlBuf,
|
||||
INOUT int *pSourceUrlLen)
|
||||
INOUT size_t *pSourceUrlLen)
|
||||
//
|
||||
// Arguments:
|
||||
// pIfInstance -
|
||||
@@ -1085,12 +1085,12 @@ exit:
|
||||
static
|
||||
CasaStatus SSCS_CALL
|
||||
AttributeEnumerate(
|
||||
IN const void *pIfInstance,
|
||||
INOUT int *pEnumHandle,
|
||||
INOUT char *pAttribNameBuf,
|
||||
INOUT int *pAttribNameLen,
|
||||
INOUT char *pAttribValueBuf,
|
||||
INOUT int *pAttribValueLen)
|
||||
IN const void *pIfInstance,
|
||||
INOUT unsigned int *pEnumHandle,
|
||||
INOUT char *pAttribNameBuf,
|
||||
INOUT size_t *pAttribNameLen,
|
||||
INOUT char *pAttribValueBuf,
|
||||
INOUT size_t *pAttribValueLen)
|
||||
//
|
||||
// Arguments:
|
||||
// pIfInstance -
|
||||
@@ -1231,9 +1231,9 @@ exit:
|
||||
//++=======================================================================
|
||||
CasaStatus
|
||||
GetIdenTokenInterface(
|
||||
IN const char *pTokenBuf,
|
||||
IN const int tokenLen,
|
||||
INOUT IdenTokenIf **ppIdenTokenIf)
|
||||
IN const char *pTokenBuf,
|
||||
IN const size_t tokenLen,
|
||||
INOUT IdenTokenIf **ppIdenTokenIf)
|
||||
//
|
||||
// Arguments:
|
||||
//
|
||||
@@ -1252,6 +1252,16 @@ GetIdenTokenInterface(
|
||||
|
||||
DbgTrace(2, "-GetIdenTokenInterface- Start\n", 0);
|
||||
|
||||
// Verify that the token is not too large for the parser
|
||||
if (tokenLen > INT32_MAX)
|
||||
{
|
||||
DbgTrace(0, "-GetIdenTokenInterface- Token too large\n", 0);
|
||||
retStatus = CasaStatusBuild(CASA_SEVERITY_INFORMATIONAL,
|
||||
CASA_FACILITY_AUTHTOKEN,
|
||||
CASA_STATUS_UNSUCCESSFUL);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
// Create a IdenTokenIfInstance object for it.
|
||||
pIdenTokenIfInstance = malloc(sizeof(*pIdenTokenIfInstance));
|
||||
if (pIdenTokenIfInstance)
|
||||
@@ -1314,7 +1324,7 @@ GetIdenTokenInterface(
|
||||
XML_SetUserData(p, &idenTokenParse);
|
||||
|
||||
// Parse the document
|
||||
if (XML_Parse(p, pTokenBuf, tokenLen, 1) == XML_STATUS_OK)
|
||||
if (XML_Parse(p, pTokenBuf, (int) tokenLen, 1) == XML_STATUS_OK)
|
||||
{
|
||||
// Verify that the parse operation completed successfully
|
||||
if (idenTokenParse.state == DONE_PARSING)
|
||||
@@ -1385,6 +1395,8 @@ GetIdenTokenInterface(
|
||||
CASA_STATUS_INSUFFICIENT_RESOURCES);
|
||||
}
|
||||
|
||||
exit:
|
||||
|
||||
DbgTrace(2, "-GetIdenTokenInterface- End, retStatus = %0X\n", retStatus);
|
||||
|
||||
return retStatus;
|
||||
|
||||
Reference in New Issue
Block a user