Bonjour,
mon programme fait un segmentation fault quand il execute l'instruction suivante :
memset(policy, 0, sizeof(srtp_policy_t));
Voici le message de seg fault :
Voici le contexte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Program received signal SIGSEGV, Segmentation fault. memset () at ../sysdeps/x86_64/memset.S:331 331 ../sysdeps/x86_64/memset.S: Aucun fichier ou dossier de ce type. in ../sysdeps/x86_64/memset.S
et voici srtp_policy_t :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 srtp_policy_t *policy; policy = si->u.rtp.info->policy; memset(policy, 0, sizeof(srtp_policy_t)); if(computeSessKey(si, policy, key_len) == -1) return -1;
Apparemment c'est sizeof(srtp_policy_t qu'il n'aime pas ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 typedef struct srtp_policy_t { ssrc_t ssrc; /**< The SSRC value of stream, or the * flags SSRC_ANY_INBOUND or * SSRC_ANY_OUTBOUND if key sharing * is used for this policy element. */ crypto_policy_t rtp; /**< SRTP crypto policy. */ crypto_policy_t rtcp; /**< SRTCP crypto policy. */ unsigned char *key; /**< Pointer to the SRTP master key for * this stream. */ struct srtp_policy_t *next; /**< Pointer to next stream policy. */ } srtp_policy_t;
Comment je devrais indiquer à memset qu'il faut prendre la taille de srtp_policy_t ?
Merci d'avance pour votre aide.
Partager