Использование fseek и ftell для определения размера файла с уязвимостью?

Я читал сообщения, в которых показано, как использовать fseek и ftell для определения размера файла.

FILE *fp;
long file_size;
char *buffer;

fp = fopen("foo.bin", "r");
if (NULL == fp) {
 /* Handle Error */
}

if (fseek(fp, 0 , SEEK_END) != 0) {
  /* Handle Error */
}

file_size = ftell(fp);
buffer = (char*)malloc(file_size);
if (NULL == buffer){
  /* handle error */
}

Я собирался использовать эту технику, но затем наткнулся на эту ссылку , которая описывает потенциальную уязвимость.

Ссылка рекомендует вместо этого использовать fstat. Кто-нибудь может это прокомментировать?

11
задан Frank 11 May 2011 в 00:26
поделиться