gethostbyaddr -> segmentation fault

 
Poster un nouveau sujet   Répondre au sujet    iprelax.fr Index du Forum -> C sous UNIX et Windows
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
mrgrieves
dummy mioche
dummy mioche


Inscrit le: 06 Mai 2003
Messages: 1

MessagePosté le: Mar Mai 06, 2003 2:37 pm    Sujet du message: gethostbyaddr -> segmentation fault Répondre en citant

Bonjour a tous.
Je travaille sur une appli qui est une sonde qui capte les paquets et qui les traite selon une politique de securite.
voici une des mes fonctions :
Code:

/*------------------------------------------------------------------------------
Name : netLogUdpDatagramme : log des datagrammes UDP
Syntaxe : long netLogUdpDatagramme( struct udphdr *udp_hdr, struct ctx_t *ctx, char *errmsg)
Description :
Input : udp_hdr = pointeur sur la trame udp
ctx = pointeur sur le contexte de communication
Output : errmsg = pointeur sur le message d'erreur
Return : 0 = OK
-1 = PB status inconnu
---------------------------------------------------------------------------------*/
#undef FUNCT
#define FUNCT "netLogUdpDatagramme()"
long
netLogUdpDatagramme (struct msg_syslog msglog, struct udphdr *udp_hdr,
struct ctx_t *ctx, char *errmsg)
{
struct in_addr ip_src, ip_dst;
struct hostent *sd_id = NULL;
char srcipname[255] = "", dstipname[255] = "";
char srcname[255] = "", dstname[255] = "";
char buff[255] = "";

ip_src.s_addr = ctx->ip_src;
printf("ah comprend pas quand meme\n");

/*CA PLANTE ICI*/sd_id = gethostbyaddr ((char *) &ip_src.s_addr, sizeof (ip_src.s_addr),AF_INET);
strncpy (srcipname, inet_ntoa (ip_src), 250);
if (sd_id)
strncpy (srcname, sd_id->h_name, 250);
else
strncpy (srcname, srcipname, 250);

ip_dst.s_addr = ctx->ip_dst;
/*ICI AUSSI*/ sd_id = gethostbyaddr ((char *) &ip_dst.s_addr, sizeof (ip_dst.s_addr),AF_INET);

strncpy (dstipname, inet_ntoa (ip_dst), 250);
if (sd_id)
strncpy (dstname, sd_id->h_name, 250);
else
strncpy (dstname, dstipname, 250);

if (netUdpMessageDecode (ntohs (udp_hdr->source), buff) < 0) {
if (netUdpMessageDecode (ntohs (udp_hdr->dest), buff) < 0)
sprintf (buff, "Unknown UDP service %d %d",
ntohs (udp_hdr->source), ntohs (udp_hdr->dest));
}

if (SyslogMode == 1)
Notify (msglog, ctx);

return (0);
}

J'obtiens un segmentation fault au niveau des appels a gethostbyaddr. la signature de la fonction est bien respectee, les types sont ok. je suis sous redhat 8.0, kernel 2.4.18-14
je ne comprends pas.
si quelqu'un a une idee.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Salemioche
salemioche
salemioche


Inscrit le: 05 Avr 2002
Messages: 350
Localisation: FR- BIOT

MessagePosté le: Mer Mai 07, 2003 8:22 am    Sujet du message: Répondre en citant

gethostbyaddr (ip_src.s_addr, sizeof (ip_src.s_addr),AF_INET);

devrait suffire, sinon c'est que ta struture ou cvtx_t a un pb
_________________
Creer son site - Hebergement - Jumeaux
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Yahoo Messenger MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    iprelax.fr Index du Forum -> C sous UNIX et Windows Toutes les heures sont au format CET (Europe)
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
Affilzen SARL : Mention légale