LINUX.ORG.RU

История изменений

Исправление 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%).