The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

05.11.2008 11:22

Опубликован перевод на русский язык цикла статьей David Chisnall "Writing Insecure C", в которых подробно рассматриваются различные аспекты написания безопасного кода на языке программирования C.

  1. Главная ссылка к новости (http://netsago.org/ru/docs/1/1...)
Автор новости: n0xi0uzz
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/18742-gcc
Ключевые слова: gcc, security
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (4) RSS
  • 1, pavlinux (ok), 16:16, 05/11/2008 [ответить]  
  • +/
    Ага, и в первом примере ошибки :)

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

     
     
  • 4, Аноним (4), 17:40, 05/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    и 'if(!y)' очень не безопасно.
     

  • 2, pavlinux (ok), 16:38, 05/11/2008 [ответить]  
  • +/
    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);
    }

    :)

     
  • 3, pavlinux (ok), 16:40, 05/11/2008 [ответить]  
  • +/
    В общем, выкиньте это с Опеннета, пока не исправят!  
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру