#include <stdio.h>

// buffer overflowは無視している文字列置き換え関数
void
replace(char *buf, char *pre, char *aft)
{
  char *p;
  p = strstr(buf, pre);
  if (p){
    char *p_2 = p + strlen(pre);
    replace(p_2, pre, aft);
    memmove(p + strlen(aft), p_2, strlen(p_2)+1);
    memcpy(p, aft, strlen(aft));
  }
}

int
main(void)
{
  char buf[1024] = "C:\\programfile\\LOG";
  replace(buf, "LOG", "RESULT");
  printf("%s\n", buf);
  return 0;
}

というソースを以前見たんですがバッファオーバーフローはどうすれば避けられますか?