camscape - for excellent IT solutions - IT knowledge base

linux :: patch libiconv pentru glibc >= 2.16

Cristian M.
TitlePatch libiconv pentru Glibc >= 2.16
TagsLibiconv, stdio.h, gets, glibc
Desc.Patch libiconv pentru Glibc >= 2.16
CodeKBLN0011 v1.0
Date10 ianuarie 2013
Compilarea libiconv (ultima versiune) folosind Glibc 2.16 + produce urmatoarea eroare.

gcc -DHAVE_CONFIG_H -DEXEEXT=\"\" -I. -I.. -I../lib  -I../intl -DDEPENDS_ON_LIBICONV=1 -DDEPENDS_ON_LIBINTL=1   -O2 -march=native -c careadlinkat.c
gcc -DHAVE_CONFIG_H -DEXEEXT=\"\" -I. -I.. -I../lib  -I../intl -DDEPENDS_ON_LIBICONV=1 -DDEPENDS_ON_LIBINTL=1   -O2 -march=native -c malloca.c
gcc -DHAVE_CONFIG_H -DEXEEXT=\"\" -I. -I.. -I../lib  -I../intl -DDEPENDS_ON_LIBICONV=1 -DDEPENDS_ON_LIBINTL=1   -O2 -march=native -c progname.c
In file included from progname.c:26:0:
./stdio.h:1010:1: error: 'gets' undeclared here (not in a function)
make[2]: *** [progname.o] Error 1
make[2]: Leaving directory `/usr/src/libiconv-1.14/srclib'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/libiconv-1.14/srclib'
make: *** [all] Error 2

Pentru rezolvare, se aplica urmatorul patch:

--- srclib/ 2011-08-07 16:42:06.000000000 +0300
+++ srclib/ 2013-01-10 15:53:03.000000000 +0200
@@ -695,7 +695,9 @@
 /* It is very rare that the developer ever has full control of stdin,
    so any use of gets warrants an unconditional warning.  Assume it is
    always declared, since it is required by C89.  */
-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

Sau download aici: