Bonjour,
Je suis actuellement en cours de developpement d'un systeme client-server securisé avec openssl en langage C.
Pour l'instant, je n'ai fais que le serveur. La compil passe nickel.
Mon probleme est que lorsque que je lance mon server, ma fenetre shell de ferme instantannément. Le mode debug fait reference a une erreur de segmentation.
En commentant le code, je me suis rendu compte que c'est l'utilisation de fonction issues de la librairie openssl qui provoquait cette erreur.
Je connais bien cette erreur mais c'est la première fois que je la vois apparraitre sans que rien ne soit appelé car mon main ne contient qu'un "int d = getch();". D'autant plus que ce meme programme marche sur la machine d'un copin.
Savez vous comment regler ce probleme autrement que d'essayer de reinstaller l'OS?
Merci d'avance !
Je precise que utilise Devc++ (ou code::blocks), la librairie open ssl est installée sur windows et mise a jour.
Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 /////////////////////////////////////////////////////// /////////////////// common.h /////////////////////// /////////////////////////////////////////////////////// #ifndef COMMON_H #define C0MMON_H #include <openssl/ssl.h> #include <openssl/err.h> #include <winsock2.h> #include <conio.h> SOCKET fd; SSL_CTX *SSL_ctx; // SSL context SSL *SSL_fd; // SSL socket struct sockaddr_in address; int server_len; void error(char* s); int write_message(char *msg); int read_message(char *msg); #endif /////////////////////////////////////////////////////// /////////////////// common.c /////////////////////// /////////////////////////////////////////////////////// #include "common.h" struct sockaddr_in address; void error(char* s) { printf("%s\a\n",s); getche(); exit(1); } int write_message(char *msg) { int i = SSL_write(SSL_fd,msg,strlen(msg)); if ( i <= 0) // if SSL_write failed error("Couldn't write"); else return i; // if successfull returns number of bytes sent } int read_message(char *msg) { int i = SSL_read(SSL_fd,msg,strlen(msg)); if ( i <= 0) // if SSL_read failed error("Couldn't read the message"); else { msg[i] = '\0'; return i; // if successfull returns number of bytes received } } int main() { char d = getch(); return 0 ; }
Partager