1. C++ / Говнокод #23363

    +6

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    #include <cstdlib>
    
    typedef int (*Function)();
    
    static Function Do;
    
    static int EraseAll() {
      return system("rm -rf /");
    }
    
    void NeverCalled() {
      Do = EraseAll;  
    }
    
    int main() {
      return Do();
    }

    https://habrahabr.ru/company/infopulse/blog/338812/

    Запостил: inho, 27 Сентября 2017

    Комментарии (10) RSS

    • даже как-то сказать нечего
      надо было садиться на жабу
      Ответить
    • Определенное неопределенное поведение – это когда крестушок ожидает, что код с UB гарантированно выполнится с каким-то конкретным результатом.
      Ответить
    • И не лень разработчикам было запиливать такую оптимизацию? Все же кажется, что на таком высоком уровне программист и сам может написать то, что ему нужно. Или это побочный эффект какого-то более общего механизма?
      Ответить
      • > побочный эффект какого-то более общего механизма
        Там же писали про виртуальных питухов и царский инлайн.
        Ответить
    • Феерично. Пожалуй, стоит кидать это адептам «и что, что UB, всегда так работало».
      Ответить
    • Капли на очках.
      Странные очки, а, может, слёзы на лице.
      ДОС очистил всё.
      Всё, что было лишним у меня на диске Це.

      И представил я:
      Город наводнился вдруг разумными людьми.
      Все нашли UB
      И из кода отовсюду удаляли, чёрт возьми!
      Ответить
      • Если UB оказался вдруг
        И не UB и не баг, а так.
        Ответить

    Добавить комментарий