1. Си / Говнокод #29289

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    // Example of a string bug: entering a password
    
    char ok = 0, password[16];
    scanf("%s", password);
    if (!strcmp(password, "correct")) ok = 1;
    if (!ok) {
      printf("Wrong password\n");
      return 1;
    }
    printf("Password accepted\n");
    return 0;

    Из материалов одной лекции. Пример должен показывать опасность выхода за пределы массива, но сам код написано в очень оригинальном (читайте: избыточном и странном) стиле.

    Запостил: anime-girl, 21 Октября 2026

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

    • Щитаю как учебный пример норм, даже бы камень тариев побольше бы.
      Ответить
      • Давайте переведем эту фразу на златохуйский:

        C читаю как у чебный при мер норм, даже бы ко мментариев по больше бы
        Ответить
    • переменная ok малось избыточна. Идея хранить пароль плейнтекстом в бинаре тоже прекрасна. Но ведь и пробелму она показывает

      Интересна борьба людей со сканфом:
      1. решение мелокмфгких https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/sscanf-s-sscanf-s-l-swscanf-s-swscanf-s-l?view=msvc-170&redirectedfrom=MSDN
      2. решение столмана, пропихнутое далее в позикс: https://man7.org/linux/man-pages/man3/sscanf.3.html#NOTES

      какие решения кажутся вам лучшее?
      Ответить

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