Вы изменяете после конца вашего malloc'd outputBuffer с помощью:
outputBuffer[outLength] = 0;
Если outLength равен 3, тогда вы можете установить outputBuffer[0]
, outputBuffer[1]
и outputBuffer[2]
, но не outputBuffer[3]
.
Либо измените ваш malloc на:
char *outputBuffer = malloc(outLength+1);
, либо измените инициализацию на:
outputBuffer[outLength-1] = 0;