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
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
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

Esto en el archivo: ec_linux.c , les marco la línea 44

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);
}
{
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

Gracias y un saludo.