Core dumped avec un char= entier dans Openssl
Résolu/Fermé
Cyrard
-
22 oct. 2008 à 21:25
Cyrard Messages postés 1 Date d'inscription jeudi 23 octobre 2008 Statut Membre Dernière intervention 24 octobre 2008 - 24 oct. 2008 à 10:22
Cyrard Messages postés 1 Date d'inscription jeudi 23 octobre 2008 Statut Membre Dernière intervention 24 octobre 2008 - 24 oct. 2008 à 10:22
A voir également:
- Core dumped avec un char= entier dans Openssl
- Open core legacy patcher - Accueil - MacOS
- Coco char - Accueil - Réseaux sociaux
- Core temp - Télécharger - Divers Utilitaires
- Core ftp - Télécharger - Téléchargement & Transfert
- Impossible de générer de clé privée à partir de openssl_pkey_new. vérifiez votre configuration openssl. le problème peut être lié au chemin vers openssl.cafile. ✓ - Forum Webmastering
7 réponses
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
23 oct. 2008 à 10:07
23 oct. 2008 à 10:07
hello
c'est normal,* d est un pointeur qui ne pointe sur rien, donc *d=14; est illégal
char a;
char *d=&a;
*d=14;
*d pointe sur a qui est un char
c'est normal,* d est un pointeur qui ne pointe sur rien, donc *d=14; est illégal
char a;
char *d=&a;
*d=14;
*d pointe sur a qui est un char
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
23 oct. 2008 à 12:35
23 oct. 2008 à 12:35
Bon, en fait, l'assignation à la déclaration est différente de l'assignation :
char a='0';
char *d=&a;
mais :
d=&a;
De même : char * d="essai";d="autre string";
"abc" est une constante de type 'const char *' où tu peux faire pointé d.
Dans ces cas là, l'erreur viens souvent du fait que tu déborde du tableau. vérifie par un accès (printf(*p)) que tu est bien dans un domaine mémoire autorisé.
char a='0';
char *d=&a;
mais :
d=&a;
De même : char * d="essai";d="autre string";
"abc" est une constante de type 'const char *' où tu peux faire pointé d.
Dans ces cas là, l'erreur viens souvent du fait que tu déborde du tableau. vérifie par un accès (printf(*p)) que tu est bien dans un domaine mémoire autorisé.
Cyrard
Messages postés
1
Date d'inscription
jeudi 23 octobre 2008
Statut
Membre
Dernière intervention
24 octobre 2008
1
24 oct. 2008 à 10:22
24 oct. 2008 à 10:22
Ok merci a tous .
Ca marche maintenant.
En effet le probleme venait du fait que le pointeur n'était pas mallocé. (il pointait sur une string assez grande)
Merci encore pour vos explications!
Ca marche maintenant.
En effet le probleme venait du fait que le pointeur n'était pas mallocé. (il pointait sur une string assez grande)
Merci encore pour vos explications!
Personne n'a d'idée?
Je me suis mal exprimé je pense.
En fait je me demande si ce n'est pas un bug carrément dans openssl.
Mais que pensez vous seulement de ce genre de chose:
Un unsigned char: *d = un entier ça provoque un core dumped. Mais si j'écris un unsigned char a = un entier (sans l'étoile) ,là ça marche! Pourtant ça devrait être la même chose? Non?
Je me suis mal exprimé je pense.
En fait je me demande si ce n'est pas un bug carrément dans openssl.
Mais que pensez vous seulement de ce genre de chose:
Un unsigned char: *d = un entier ça provoque un core dumped. Mais si j'écris un unsigned char a = un entier (sans l'étoile) ,là ça marche! Pourtant ça devrait être la même chose? Non?
#include <stdio.h> #include <string.h> int main(void) { unsigned char *d; *d=14; return 1; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oulah je ne suis pas sûr de bien comprendre:
*d est un pointeur?
Moi je pensais que : d est un pointeur sur un char
*d est un char
ton code fonctionne en effet mais par rapport au code openssl (je n'ai remis que le début) comment pourrait on le modifier pour qu'il marche normalement? Je ne le comprend pas en integralite...
*d est un pointeur?
Moi je pensais que : d est un pointeur sur un char
*d est un char
ton code fonctionne en effet mais par rapport au code openssl (je n'ai remis que le début) comment pourrait on le modifier pour qu'il marche normalement? Je ne le comprend pas en integralite...
void ASN1_put_object(unsigned char **pp, int constructed, int length, int tag, int xclass) { unsigned char *p= *pp; int i, ttag; i=(constructed)?V_ASN1_CONSTRUCTED:0; i|=(xclass&V_ASN1_PRIVATE); if (tag < 31) *(p++)=i|(tag&V_ASN1_PRIMITIVE_TAG);
Tu es sur que cest pas plutot : d=&a ?
Car d est le pointeur est *d est la variable pointee cad un char ici.
Car d est le pointeur est *d est la variable pointee cad un char ici.
dubcek
Messages postés
18784
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 avril 2025
5 630
23 oct. 2008 à 12:05
23 oct. 2008 à 12:05
non, char d=&a est faux , il faut définir d comme un pointeur *d.
Oups autant pour moi, j'annule mon message précèdent. Ça revient au meme.Mais bon au final tu initialise ton pointeur sur l'adresse de a qui est un char. Mais que se passe t il quand tu lui attribue la valeur 14?
*d=14; ça revient a faire: a=14; non?
Donc dans ce cas dans ma fonction ils ont essayer de mettre un caractere = un entier>9...
Quand j'essaie d'afficher a ça n'affiche rien...
*d=14; ça revient a faire: a=14; non?
Donc dans ce cas dans ma fonction ils ont essayer de mettre un caractere = un entier>9...
Quand j'essaie d'afficher a ça n'affiche rien...
#include <stdio.h> #include <string.h> int main(void) { unsigned char a; unsigned char *d; d=&a; *d=14; if(*d==a) printf("%s\n","*d==a"); printf("%c\n",a); printf("%x\n",d); return 1; }