saveInput[index] = (char*)malloc(len + 1);
saveInput[index++] = input;
이 부분이 문제입니다.
자 input이라는 배열의 주소값이 0x1234 라고 대충 칩시다.
saveInput[0] 은 malloc에 의해서 주소값 0x9999에 할당됬다고 치면
그 다음 연산에 의해서 saveInput[0] 값은 0x1234가 됩니다.
그 다음에 index값은 1이 될텐데...
saveInput[1] 은 malloc에 의해서 주소값 0x9933 에 할당됐다고 치면
그 다음 연산에 의해서 saveInput[1] 값은 0x1234가 됩니ㅏㄷ.
즉, saveInput[0]과 saveInput[1] 값이 똑같이 되는거죠.
당연하지만 이걸 의도하신건 아니겠죠?