Опубликован (http://netsago.org/ru/docs/1/14/) перевод на русский язык цикла статьей David Chisnall "Writing Insecure C", в которых подробно рассматриваются различные аспекты написания безопасного кода на языке программирования C.URL: http://netsago.org/ru/docs/1/14/
Новость: http://www.opennet.me/opennews/art.shtml?num=18742
Ага, и в первом примере ошибки :)#define MALLOC(x,y) do { y malloc(x); if (!y) abort(1); } while(0)
1. Это что за конструкция "y malloc(x);" матернётся как error: expected ';' before 'malloc'
2. И как следствие предыдущей - if(!y) будет - warning: statement with no effect
3. У abort() не бывает аргументов!
и 'if(!y)' очень не безопасно.
void * xrealloc(void *ptr, size_t nmemb, size_t size){
void *new_ptr;
size_t new_size = nmemb * size;
if (SIZE_T_MAX / nmemb < size)
return NULL;
return realloc(ptr, new_size);
}А если использовать вот так???
int main(void){
char *a;
xrealloc(a, 0, -1);
}:)
В общем, выкиньте это с Опеннета, пока не исправят!