URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 44881
[ Назад ]

Исходное сообщение
"Перевод материала про написание безопасного код на языке Си"

Отправлено opennews , 05-Ноя-08 16:16 
Опубликован (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


Содержание

Сообщения в этом обсуждении
"Перевод материала про написание безопасного код на языке Си"
Отправлено pavlinux , 05-Ноя-08 16:16 
Ага, и в первом примере ошибки :)

#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() не бывает аргументов!


"Перевод материала про написание безопасного код на языке Си"
Отправлено Аноним , 05-Ноя-08 17:40 
и 'if(!y)' очень не безопасно.

"Перевод материала про написание безопасного код на языке Си"
Отправлено pavlinux , 05-Ноя-08 16:38 
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);
}

:)


"Перевод материала про написание безопасного код на языке Си"
Отправлено pavlinux , 05-Ноя-08 16:40 
В общем, выкиньте это с Опеннета, пока не исправят!