kouzdra (kouzdra) wrote,
kouzdra
kouzdra

This journal has been placed in memorial status. New entries cannot be posted to it.

Моей коллекции идиотских оптимизаций компиляторов С прибыло:

О! Какая прелесть на Хабре попалась:

#include <cstdlib>

typedef int (*Function)();

static Function Do;

static int EraseAll() {
  return system("rm -rf /");
}

void NeverCalled() {
  Do = EraseAll;  
}

int main() {
  return Do();
}


Далее:

clang -O2 ttt.cpp -o ttt && ./ttt
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe

Разьяснение конечно я понимаю, но "убивать надо таких оптимизаторов"
Tags: #include
Subscribe

  • Отдельно радует ЖЖ-интеллект,

    который проставил в недавний пост тэг #include (в этот впрочем тоже)

  • "И все его оставили"

    Чего0то мне кажется, что на Украине жизнь скоро может начать иллюстрировать искусство: Когда случился тот неслыханный скандал, тот крик, и брань, и…

  • Технологии

    "... держать молоток либо какие-то новые технологии...", – считает Володин.

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 29 comments

  • Отдельно радует ЖЖ-интеллект,

    который проставил в недавний пост тэг #include (в этот впрочем тоже)

  • "И все его оставили"

    Чего0то мне кажется, что на Украине жизнь скоро может начать иллюстрировать искусство: Когда случился тот неслыханный скандал, тот крик, и брань, и…

  • Технологии

    "... держать молоток либо какие-то новые технологии...", – считает Володин.