Intento compilar Ettercap 0.7.3 pero al final me muestra el siguiente error:
Código:
cc1: warnings being treated as errors
ec_linux.c: In function ‘disable_ip_forward’:
ec_linux.c:44: error: ignoring return value of ‘fscanf’, declared with attribute warn_unused_result
ec_linux.c: In function ‘restore_ip_forward’:
ec_linux.c:71: error: ignoring return value of ‘fscanf’, declared with attribute warn_unused_result
^Tifa^ comenta que _warn_unused_return solicita que las 2 funciones devuelvan algún valor, pero son funciones void. Aquí esta el post donde hace mención:
Su error es referente a 2 funciones declaradas con el atributo _warn_unused_return_ que aparentemente no estan devolviendo nada para ser funciones, y por ende el atributo esta lanzando un aviso de que no estan estas 2 funciones devolviendo nada..... como este atributo deberia tratarse solo como warnings y continuar con la compilacion pero esta simpatica linea :
cc1: warnings being treated as errors
Ya especifica que si hay warnings.. pues tratalos como error, y tratarlos como error es No compilar.
Abre el archivo linux.c especificamente dentro de estas 2 funciones :
disable_ip_forward()
restore_ip_forward()
Que estan cerca de la linea 44 y 71 como te indica ahi...
Puedes postear el codigo de ambas? Te recomiendo que los postees en el subforo de programacion de C/C++ ya que aqui podran ayudarte mas que en este subforo de Linux. Ya que tu problema no es de configuracion o Linux en si, sino de una aplicacion que no compila porque su apreciado codigo tiene atributos incluidos (Fuera mas facil quitarlos todos de los archivos cabeceras y que el compilador No chequee nada y compile, pero esto es falta de etica para un programador
)
En fin como te dije abre las 2 funciones anteriores, copia el codigo de estas en el foro de C/C++ y expon tu error que no puedes compilar por x atributos declarados, y que no quieres quitar los atributos (Que es probable que te den esa solucion que es la mas facil) sino que tu quieres que estas funciones obligatoriamente retornen un valor![;)](https://foro.elhacker.net/Smileys/chef/wink.gif)
cc1: warnings being treated as errors
Ya especifica que si hay warnings.. pues tratalos como error, y tratarlos como error es No compilar.
Abre el archivo linux.c especificamente dentro de estas 2 funciones :
disable_ip_forward()
restore_ip_forward()
Que estan cerca de la linea 44 y 71 como te indica ahi...
Puedes postear el codigo de ambas? Te recomiendo que los postees en el subforo de programacion de C/C++ ya que aqui podran ayudarte mas que en este subforo de Linux. Ya que tu problema no es de configuracion o Linux en si, sino de una aplicacion que no compila porque su apreciado codigo tiene atributos incluidos (Fuera mas facil quitarlos todos de los archivos cabeceras y que el compilador No chequee nada y compile, pero esto es falta de etica para un programador
![;D](https://foro.elhacker.net/Smileys/chef/grin.gif)
En fin como te dije abre las 2 funciones anteriores, copia el codigo de estas en el foro de C/C++ y expon tu error que no puedes compilar por x atributos declarados, y que no quieres quitar los atributos (Que es probable que te den esa solucion que es la mas facil) sino que tu quieres que estas funciones obligatoriamente retornen un valor
![;)](https://foro.elhacker.net/Smileys/chef/wink.gif)
Esto en el archivo: ec_linux.c , les marco la línea 44
![;)](https://foro.elhacker.net/Smileys/chef/wink.gif)
Código:
void disable_ip_forward(void)
{
FILE *fd;
fd = fopen("/proc/sys/net/ipv4/ip_forward", "r");
ON_ERROR(fd, NULL, "failed to open /proc/sys/net/ipv4/ip_forward");
/*Esta es la línea 44 jeje */ fscanf(fd, "%c", &saved_status);
fclose(fd);
DEBUG_MSG("disable_ip_forward: old value = %c", saved_status);
fd = fopen("/proc/sys/net/ipv4/ip_forward", "w");
ON_ERROR(fd, NULL, "failed to open /proc/sys/net/ipv4/ip_forward");
fprintf(fd, "0");
fclose(fd);
atexit(restore_ip_forward);
}
static void restore_ip_forward(void)
{
FILE *fd;
char current_status;
/* no modification needed */
if (saved_status == '0')
return;
/* read the current status to know if we need to modify it */
fd = fopen("/proc/sys/net/ipv4/ip_forward", "r");
ON_ERROR(fd, NULL, "failed to open /proc/sys/net/ipv4/ip_forward");
fscanf(fd, "%c", ¤t_status);
fclose(fd);
DEBUG_MSG("ATEXIT: restore_ip_forward: curr: %c saved: %c", current_status, saved_status);
if (current_status == saved_status) {
DEBUG_MSG("ATEXIT: restore_ip_forward: does not need restoration");
return;
}
fd = fopen("/proc/sys/net/ipv4/ip_forward", "w");
if (fd == NULL) {
FATAL_ERROR("ip_forwarding was disabled, but we cannot re-enable it now.\n"
"remember to re-enable it manually\n");
}
fprintf(fd, "%c", saved_status);
fclose(fd);
DEBUG_MSG("ATEXIT: restore_ip_forward: restore to %c", saved_status);
}
Al parecer ^Tifa^ tiene muy claro el problema, el detalle es que no se como solucionarlo y siento que ya le invertí mucho tiempo a la instalación de Ettercap (mas de 5 horas) que no quisiera ver perdido ese tiempo
![;D](https://foro.elhacker.net/Smileys/chef/grin.gif)
Gracias y un saludo.