История изменений
Исправление firkax, (текущая версия) :
даже линковщик(!)
Это чтоб ты был в курсе что какая-то сторонняя библиотека, которой ты захотел воспользоваться, с багом.
почему нет подобного предупреждения при использовани strncpy, например, которая тоже дырявая, даже не смотря на n?
Что значит дырявая? Дырявым может быть твой код, если он плохо написан, а в самой strncpy ничего плохого нет (надо просто маны читать и понимать, что именно она делает и зачем). И даже для strcpy, хоть оно и проблемное, вполне есть нормальные варианты использования, например: { char s[10]; strcpy(s, "qwe"); }
.
А вот полностью безопасных способов использования gets практически не существует. Есть один только: ты заранее редиректишь stdin на какой-то файл, содержимое которого уже 100% проверено на отсутствие переполнений, и читаешь его с помощью gets. Но это какая-то странная штука, так очевидно никто делать не станет. Так что gets это гарантированно либо баг в 99%+ случаев), либо сомнительный код который всё равно надо исправить (в остальных меньше 1%).
Исправление firkax, :
даже линковщик(!)
Это чтоб ты был в курсе что какая-то сторонняя библиотека, которой ты захотел воспользоваться, с багом.
почему нет подобного предупреждения при использовани strncpy, например, которая тоже дырявая, даже не смотря на n?
Что значит дырявая? Дырявым может быть твой код, если он плохо написан, а в самой strncpy ничего плохого нет (надо просто маны читать и понимать, что именно она делает и зачем). И даже для strcpy, хоть оно и проблемное, вполне есть нормальные варианты использования, например: { char s[10]; strcpy(s, "qwe"); }
.
А вот полностью безопасных способов использования gets практически не существует. Есть один только: ты заранее редиректишь stdin на какой-то файл, содержимое которого уже 100% проверено на отсутствие переполнений, и читаешь его с помощью gets. Но это какая-то странная штука, так очевидно никто делать не станет. Так что gets это гарантированно либо баг 9в 99%+ случаев), либо сомнительный код который всё равно надо исправить (в остальных меньше 1%).
Исходная версия firkax, :
даже линковщик(!)
Это чтоб ты был в курсе что какая-то сторонняя библиотека, которой ты захотел воспользоваться, с багом.
почему нет подобного предупреждения при использовани strncpy, например, которая тоже дырявая, даже не смотря на n?
Что значит дырявая? Дырявым может быть твой код, если он плохо написан, а в самой strncpy ничего плохого нет.
А вот полностью безопасных способов использования gets практически не существует. Есть один только: ты заранее редиректишь stdin на какой-то файл, содержимое которого уже 100% проверено на отсутствие переполнений, и читаешь его с помощью gets. Но это какая-то странная штука, так очевидно никто делать не станет. Так что gets это гарантированно либо баг 9в 99%+ случаев), либо сомнительный код который всё равно надо исправить (в остальных меньше 1%).