kouzdra (kouzdra) wrote,
kouzdra
kouzdra

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

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

#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
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 29 comments