unsigned char *cp = it->Data;
unsigned long overflow = 0x1ffUL << (((sizeof(ival) - 1) * 8) - 1);
unsigned long ofloinit;
+ bool isNegative = false;
- if (*cp & 0x80)
- ival = -1L;
+ if (*cp & 0x80) {
+ isNegative = true;
+ }
ofloinit = ival & overflow;
while (len) {
ival |= *cp++;
--len;
}
+
+ if (isNegative) {
+ ival *= -1L;
+ }
return ival;
}
newParams = SEC_ASN1EncodeItem (poolp, &algid->parameters, &rc2,
sec_rc2cbc_parameter_template);
PORT_Free(rc2.rc2ParameterVersion.Data);
+ rc2.rc2ParameterVersion.Data = NULL;
if (newParams == NULL)
goto loser;
break;
goto loser;
if (initVector.Length != iv.Length) {
PORT_Free(iv.Data);
+ iv.Data = NULL;
goto loser;
}
memcpy(initVector.Data, iv.Data, initVector.Length);
PORT_Free(iv.Data);
+ iv.Data = NULL;
break;
}
case SEC_OID_RC2_CBC:
if (initVector.Length != rc2.iv.Length) {
PORT_Free(rc2.iv.Data);
+ rc2.iv.Data = NULL;
PORT_Free(rc2.rc2ParameterVersion.Data);
+ rc2.rc2ParameterVersion.Data = NULL;
goto loser;
}
memcpy(initVector.Data, rc2.iv.Data, initVector.Length);
PORT_Free(rc2.iv.Data);
+ rc2.iv.Data = NULL;
ulEffectiveBits = rc2_map(&rc2.rc2ParameterVersion);
PORT_Free(rc2.rc2ParameterVersion.Data);
+ rc2.rc2ParameterVersion.Data = NULL;
if (ulEffectiveBits != cssmKey->KeyHeader.LogicalKeySizeInBits)
goto loser;
break;