Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
mrgrieves dummy mioche

Inscrit le: 06 Mai 2003 Messages: 1
|
Posté le: Mar Mai 06, 2003 2:37 pm Sujet du message: gethostbyaddr -> segmentation fault |
|
|
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 |
|
 |
Salemioche salemioche


Inscrit le: 05 Avr 2002 Messages: 350 Localisation: FR- BIOT
|
Posté le: Mer Mai 07, 2003 8:22 am Sujet du message: |
|
|
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 |
|
 |
|
|
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
|
|