segmentation fault en llamada a función

Mori
29 de Octubre del 2007
Hola, estoy teniendo un problema en una llamada a función que produce un segmentation fault. He comprobado mediante trazas que el fallo de segmentación se produce justo en la llamada, y no sé a qué se puede deber...

Aquí está la parte del código:

...
///Se comprueba que la IP del servidor es valida, y si no es así se ignora el mensaje
if(verifyRemoteAddress(remote_addr.sin_addr)!=VALID_ADDRESS)
{
TRACE(DEBUG_CRITICAL, "La IP %s no se reconoce como un servidor FTP valido. Trama ignorada.", inet_ntoa(remote_addr.sin_addr));
continue;
}
...



tRemoteAddressOK verifyRemoteAddress(struct in_addr serverIP)
{
TRACE(DEBUG_CRITICAL, "verificando dirección remota...");
int serverList[] = {6, 14, 22};///< Son los indices que contienen servidores FTP en la variable config
int lengthServerList = sizeof(serverList);///< longitud de la lista de servidores (si se añade alguno en
/// posteriores versiones no hace falta modificar su valor.
int i;

for(i=0; i<lengthServerList; i++)
{
if (isServer(inet_ntoa(serverIP),config[serverList[i]]))
return VALID_ADDRESS;
}

return INVALID_ADDRESS;
}//fin funcion verifyRemoteAddress




Algunos comentarios:
-El tipo de vuelto simplemente es un tipo enum que indica un código de error.

-La variable remote_address es de tipo sockaddr_in, tiene un miembro sin_addr. En cualquier caso, probé haciendo la conversión a cadena de caracteres de la ip fuera de esta función, y pasándole como parámetro una cadena de caracteres, y daba segmentation fault de cualquier manera.

-El error se produce justo en la llamada con total seguridad. La traza "verificando dirección remota..." no llega a mostrarse.

-He comprobado que la máquina en la que se está ejecutando tiene memoria suficiente.

¿Alguien puede ayudarme con esto?
Muchísimas gracias por adelantado.