There is an error of a runtime but I can't figure why it is. I assumed at first it was a syntax error but that is not the case. Well I just need to know what it is suppose to do:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <sys/time.h>
typedef int int32;
typedef char int8;
void xorStringRounds(int8 *output, int8 *pbDataOne, const int8 *pbDataTwo, int32 length)
{
int32 i = 0;
for(i=0; i<length; i++)
{
output[i] = (int8)(pbDataOne[i] ^ pbDataTwo[i]);
}
return;
}
void itoa( int32 num, int8 *alpha, int32 radix )
{
if( radix == 10 )
{
sprintf(alpha, "%i", num);
}
else if( radix == 16 )
{
sprintf(alpha, "%X", num);
}
}
int8 *oldModString(int32 modifier, const int8 *pbDataOne, int32 length)
{
int8 leading[3];
int32 ileading;
int8 * tempStr = NULL;
int8 * ret;
int32 i = 0;
itoa(modifier/2, leading, 10);
ileading = atoi(leading);
tempStr = (int8 *) malloc(8);
ret = (int8 *) malloc(length);
memset(tempStr, 0, 8);
tempStr[0] = 0;
if( (modifier+1)%2 == 0 ) {
tempStr[0] = (int8)((ileading<<4) + 8);
}
else {
tempStr[0] = (int8)(ileading<<4);
}
for(i=0; i<(length>>3); i++)
{
xorStringRounds(ret+i*8, tempStr, pbDataOne+i*8, 8);
}
free(tempStr);
return ret;
}
int main(int argc, char **argv) {
int8 data[32];
memset(data, 0x0A, sizeof(data));
int8 *resp = oldModString(0xFF, data, sizeof(data));
free(resp);
return 0;
}