[РЕШЕНО] _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

Модератор: Модераторы разделов

Ответить
IMB
Сообщения: 2559
ОС: Debian

[РЕШЕНО] _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

Сообщение IMB »

Доброго дня!
При сборке parted-2.4, знаю что древний, возникает ошибка:

Код: Выделить всё

  CC       localcharset.lo
In file included from localcharset.c:30:0:
./stdio.h:1050:1: error: 'gets' undeclared here (not in a function)
 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
 ^
make[5]: *** [localcharset.lo] Error 1

Используемый компилятор:

Код: Выделить всё

$ /tmp/stbgcc-4.8-1.5/bin/mipsel-linux-gcc --version
mipsel-linux-gcc (Broadcom stbgcc-4.8-1.5) 4.8.5

В сети находяться только советы по удалению строки содержащей 'gets is a security', неужто это нельзя решить более изяшно?
Мпасибо.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: [РЕШЕНО] _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

Сообщение NickLion »

IMB
Наиболее изящно — заменить gets на fgets с указанием stdout и ограничения на размер буфера в исходниках.
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: [РЕШЕНО] _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

Сообщение IMB »

Проблема в том. что это сообщенеи определено в h-файле и возникает при его использовании.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: [РЕШЕНО] _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

Сообщение NickLion »

А, ну, или собирайте с glibc < 2.16 (кажется).

Я имел в виду файл: localcharset.c:30
Там есть использование gets, из-за него и падает. Если этот gets заменить на fgets, то компиляция пойдёт дальше нормально.
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: [РЕШЕНО] _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

Сообщение IMB »

Нее, я как раз пытаюсь перейти на gcc-4.8 с gcc-4.5.

А ошибка ранее появляется и на другом файле

Код: Выделить всё

....
  CC       freading.lo
In file included from freading.h:18:0,
                 from freading.c:20:
./stdio.h:1050:1: error: 'gets' undeclared here (not in a function)
 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
..
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: [РЕШЕНО] _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

Сообщение Bizdelnick »

И там меняйте.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: [РЕШЕНО] _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

Сообщение NickLion »

IMB
Ага, закачал код, посмотрел, там как раз делается предупреждение, если gets используется, а в новом glibc gets просто выкинули. Так что, удалить ту строчку будет нормально, если хочется совсем хорошее решение, то можно обернуть в

Код: Выделить всё

#ifdef gets
...
#endif

Или

Код: Выделить всё

#if !__GLIBC_PREREQ(2, 16)
...
#endif
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: [РЕШЕНО] _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

Сообщение IMB »

Чесно говоря я надеялся отделаться установкой како-либо переменной окружения при конфигурирования, что-то из серии av_cv_XXXX
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: [РЕШЕНО] _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

Сообщение NickLion »

Не получится. parted-2.4 не рассчитан на glibc-2.16. Тут либо добавлять функцию gets, либо убрать обёртку-предупреждение для этой функции.
В новом parted этот участок кода следующий:

Код: Выделить всё

#undef gets
#if HAVE_RAW_DECL_GETS
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif
Спасибо сказали:
Ответить