Там вообще нет переполнения буфера. Но это не значит, что это безопасно.
Проблема, которую вы ожидаете найти, заключается в следующей строке:
printf(lbuf);
Когда вы предоставляете строку формата, убедитесь, что она находится под вашим контролем и запрашивает только те аргументы, которые вы указали. Доступ к не предоставленным аргументам или неправильному типу приводит к неопределенному поведению (могут происходить все виды странных и потенциально опасных вещей). Кроме того, можно использовать %n
, чтобы ткнуть в память, что более опасно.
В этом случае lbuf
содержит Welcome:
, за которым следует произвольный небезопасный ввод пользователя.
Кроме того, программа безоговорочно читает argv[1]
(допущение argc > 0
) и далее предполагает, что она указывает на строку (предположение argc > 1
) при передаче ее в strlen()
.