Patches sent by India based on Security review.
This commit is contained in:
@@ -221,42 +221,50 @@ static int32_t sscsshs_GetNextSHSEntry
|
||||
* Internal function that escapes delimited characters in a string.
|
||||
*
|
||||
*/
|
||||
static void sscsshs_ChkEscapeString(SS_UTF8_T *entryBuf)
|
||||
static void sscsshs_ChkEscapeString(SS_UTF8_T **entryBuf)
|
||||
{ /* beginning of the call */
|
||||
/* ########################## DECLARATIONS START HERE ######################### */
|
||||
|
||||
int len = 0, i, k = 0;
|
||||
int len = 0, i, k = 0, tmplen = 0, escaped = 0;
|
||||
SS_UTF8_T *tempBuf = NULL;
|
||||
|
||||
/* ############################## CODE STARTS HERE ############################ */
|
||||
|
||||
if(!(tempBuf = (SS_UTF8_T *)malloc(NSSCS_MAX_SECRET_BUF_LEN - SSCS_CRED_SET_LEN)))
|
||||
len = sscs_Utf8Strlen(*entryBuf) + 1;
|
||||
|
||||
if (len > (NSSCS_MAX_SECRET_BUF_LEN - SSCS_CRED_SET_LEN))
|
||||
return;
|
||||
|
||||
/* We assume that all the chars in entryBuf might need escaping */
|
||||
if(!(tempBuf = (SS_UTF8_T *)malloc(2 * (NSSCS_MAX_SECRET_BUF_LEN - SSCS_CRED_SET_LEN))))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
memset(tempBuf, 0, NSSCS_MAX_SECRET_BUF_LEN - SSCS_CRED_SET_LEN);
|
||||
len = sscs_Utf8Strlen(entryBuf) + 1;
|
||||
memset(tempBuf, 0, 2 * (NSSCS_MAX_SECRET_BUF_LEN - SSCS_CRED_SET_LEN));
|
||||
|
||||
for(i = 0; i < len; i++)
|
||||
{
|
||||
SS_UTF8_T c = entryBuf[i];
|
||||
SS_UTF8_T c = *((*entryBuf)+i);
|
||||
|
||||
switch(c)
|
||||
{
|
||||
case (SS_UTF8_T)'\\':
|
||||
tempBuf[k++] = (SS_UTF8_T)'\\';
|
||||
tempBuf[k++] = (SS_UTF8_T)'\\';
|
||||
escaped = 1;
|
||||
break;
|
||||
|
||||
case (SS_UTF8_T)':':
|
||||
tempBuf[k++] = (SS_UTF8_T)'\\';
|
||||
tempBuf[k++] = (SS_UTF8_T)':';
|
||||
escaped = 1;
|
||||
break;
|
||||
|
||||
case (SS_UTF8_T)'=':
|
||||
tempBuf[k++] = (SS_UTF8_T)'\\';
|
||||
tempBuf[k++] = (SS_UTF8_T)'=';
|
||||
escaped = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -264,7 +272,11 @@ static void sscsshs_ChkEscapeString(SS_UTF8_T *entryBuf)
|
||||
}
|
||||
}
|
||||
|
||||
sscs_Utf8Strcpy(entryBuf, tempBuf);
|
||||
if (escaped) {
|
||||
free (*entryBuf);
|
||||
*entryBuf = tempBuf;
|
||||
return;
|
||||
}
|
||||
|
||||
/* ############################### CODE EXITS HERE ############################# */
|
||||
|
||||
@@ -310,7 +322,7 @@ static int32_t sscsshs_PopulateSecretBuf
|
||||
retBuffer[sscs_Utf8Strlen(retBuffer)] = (SS_UTF8_T)0x0A; // add a line feed delimiter
|
||||
}
|
||||
|
||||
sscsshs_ChkEscapeString(key);
|
||||
sscsshs_ChkEscapeString(&key);
|
||||
|
||||
if(sscs_Utf8Strcmp(key, SSCS_CRED_SET))
|
||||
{
|
||||
@@ -328,7 +340,7 @@ static int32_t sscsshs_PopulateSecretBuf
|
||||
sscs_Utf8Strcat(retBuffer, APP_DELIMITER);
|
||||
}
|
||||
|
||||
sscsshs_ChkEscapeString(val);
|
||||
sscsshs_ChkEscapeString(&val);
|
||||
if((*bufLen + (sscs_Utf8StrSize(val))) < NSSCS_MAX_SECRET_BUF_LEN)
|
||||
{
|
||||
sscs_Utf8Strcat(retBuffer, val);
|
||||
@@ -385,7 +397,7 @@ static int32_t sscsshs_PopulateBinarySecretBuf
|
||||
return(NSSCS_E_PARSER_FAILURE); // create error stating non-binary buffer
|
||||
}
|
||||
|
||||
sscsshs_ChkEscapeString(key);
|
||||
sscsshs_ChkEscapeString(&key);
|
||||
sscs_Utf8Strcpy((SS_UTF8_T *)retBuffer, key);
|
||||
sscs_Utf8Strcat((SS_UTF8_T *)retBuffer, BINARY_DELIMITER);
|
||||
len = sscs_Utf8StrSize((SS_UTF8_T *)retBuffer);
|
||||
@@ -1057,7 +1069,7 @@ miCASAReadSecret
|
||||
|
||||
// escape delimited characters
|
||||
memcpy(escapedSHSName, sharedSecretID->name, sscs_Utf8StrSize((SS_UTF8_T *)sharedSecretID->name));
|
||||
sscsshs_ChkEscapeString(escapedSHSName);
|
||||
sscsshs_ChkEscapeString(&escapedSHSName);
|
||||
|
||||
if((escNameLen = sscs_Utf8Strlen((SS_UTF8_T *)escapedSHSName)) < 1)
|
||||
{
|
||||
@@ -1227,7 +1239,7 @@ miCASARemoveSecret
|
||||
|
||||
// escape delimited characters
|
||||
memcpy(escapedSHSName, sharedSecretID->name, sscs_Utf8StrSize((SS_UTF8_T *)sharedSecretID->name));
|
||||
sscsshs_ChkEscapeString(escapedSHSName);
|
||||
sscsshs_ChkEscapeString(&escapedSHSName);
|
||||
|
||||
if((escNameLen = sscs_Utf8Strlen((SS_UTF8_T *)escapedSHSName)) < 1)
|
||||
{
|
||||
@@ -1373,7 +1385,7 @@ miCASAWriteSecret
|
||||
|
||||
// escape delimited characters
|
||||
memcpy(escapedSHSName, sharedSecretID->name, sscs_Utf8StrSize((SS_UTF8_T *)sharedSecretID->name));
|
||||
sscsshs_ChkEscapeString(escapedSHSName);
|
||||
sscsshs_ChkEscapeString(&escapedSHSName);
|
||||
|
||||
if((escNameLen = sscs_Utf8Strlen((SS_UTF8_T *)escapedSHSName)) < 1)
|
||||
{
|
||||
@@ -1575,13 +1587,13 @@ miCASAWriteKey
|
||||
|
||||
// escape delimited characters
|
||||
memcpy(escapedSHSName, sharedSecretID->id, sscs_Utf8StrSize((SS_UTF8_T *)sharedSecretID->id));
|
||||
sscsshs_ChkEscapeString(escapedSHSName);
|
||||
sscsshs_ChkEscapeString(&escapedSHSName);
|
||||
|
||||
memcpy(escapedSHSKey, key, keyLen);
|
||||
sscsshs_ChkEscapeString(escapedSHSKey);
|
||||
sscsshs_ChkEscapeString(&escapedSHSKey);
|
||||
|
||||
memcpy(escapedSHSValue, val, valLen);
|
||||
sscsshs_ChkEscapeString(escapedSHSValue);
|
||||
sscsshs_ChkEscapeString(&escapedSHSValue);
|
||||
|
||||
if((escNameLen = sscs_Utf8Strlen((SS_UTF8_T *)escapedSHSName)) < 1)
|
||||
{
|
||||
@@ -1701,10 +1713,10 @@ miCASAWriteBinaryKey
|
||||
|
||||
// escape delimited characters
|
||||
memcpy(escapedSHSName, sharedSecretID->id, sscs_Utf8StrSize((SS_UTF8_T *)sharedSecretID->id));
|
||||
sscsshs_ChkEscapeString(escapedSHSName);
|
||||
sscsshs_ChkEscapeString(&escapedSHSName);
|
||||
|
||||
memcpy(escapedSHSKey, key, keyLen);
|
||||
sscsshs_ChkEscapeString(escapedSHSKey);
|
||||
sscsshs_ChkEscapeString(&escapedSHSKey);
|
||||
|
||||
if((escNameLen = sscs_Utf8Strlen((SS_UTF8_T *)escapedSHSName)) < 1)
|
||||
{
|
||||
@@ -1821,10 +1833,10 @@ miCASAReadKey
|
||||
|
||||
// escape delimited characters
|
||||
memcpy(escapedSHSName, sharedSecretID->id, sscs_Utf8StrSize((SS_UTF8_T *)sharedSecretID->id));
|
||||
sscsshs_ChkEscapeString(escapedSHSName);
|
||||
sscsshs_ChkEscapeString(&escapedSHSName);
|
||||
|
||||
memcpy(escapedSHSKey, key, keyLen);
|
||||
sscsshs_ChkEscapeString(escapedSHSKey);
|
||||
sscsshs_ChkEscapeString(&escapedSHSKey);
|
||||
|
||||
if((escNameLen = sscs_Utf8Strlen((SS_UTF8_T *)escapedSHSName)) < 1)
|
||||
{
|
||||
@@ -1939,10 +1951,10 @@ miCASAReadBinaryKey
|
||||
|
||||
// escape delimited characters
|
||||
memcpy(escapedSHSName, sharedSecretID->id, sscs_Utf8StrSize((SS_UTF8_T *)sharedSecretID->id));
|
||||
sscsshs_ChkEscapeString(escapedSHSName);
|
||||
sscsshs_ChkEscapeString(&escapedSHSName);
|
||||
|
||||
memcpy(escapedSHSKey, key, keyLen);
|
||||
sscsshs_ChkEscapeString(escapedSHSKey);
|
||||
sscsshs_ChkEscapeString(&escapedSHSKey);
|
||||
|
||||
if((escNameLen = sscs_Utf8Strlen((SS_UTF8_T *)escapedSHSName)) < 1)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user