fgets investigations
This commit is contained in:
parent
aeeefe061d
commit
8ba88d2b8d
@ -1,3 +1,3 @@
|
|||||||
# Le code des tetaricks
|
# Le code des Tetatricks
|
||||||
|
|
||||||
Attention, c'est un peu le fouillis.
|
Attention, c'est un peu le fouillis.
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#
|
# -------------------
|
||||||
# NETWORK EXPERIMENTS
|
# NETWORK EXPERIMENTS
|
||||||
#
|
# -------------------
|
||||||
|
|
||||||
COPT = -Wall -DDEBUG_LEVEL=1 -pthread
|
COPT = -Wall -DDEBUG_LEVEL=1 -g -pthread
|
||||||
|
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
# Experimental Specialized Telnet Server
|
# Experimental Specialized Telnet Server
|
||||||
@ -10,3 +10,5 @@ COPT = -Wall -DDEBUG_LEVEL=1 -pthread
|
|||||||
|
|
||||||
emc-tnetd: emc-tnetd.c Makefile
|
emc-tnetd: emc-tnetd.c Makefile
|
||||||
gcc $< $(COPT) -o $@
|
gcc $< $(COPT) -o $@
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
@ -11,9 +11,15 @@ que c'est pas si simple que ça.
|
|||||||
Le fichier qui permet de mettre en évidence les soucis est assez
|
Le fichier qui permet de mettre en évidence les soucis est assez
|
||||||
simple pour être facile à suivre : `emc-tnetd.c`.
|
simple pour être facile à suivre : `emc-tnetd.c`.
|
||||||
|
|
||||||
Première chose : le buffer-overflow.
|
### Le buffer-overflow.
|
||||||
|
|
||||||
Deuxième chose : les caractères de controle.
|
Enfin pas vraiment un dépassement de tampon, mais juste
|
||||||
|
une inconpréhension sur la sémantique de `fgets` sur les conditions
|
||||||
|
d'erreur. Et dans un contexte particulier : le FILE * est fourni
|
||||||
|
par un `fdopen` appliqué sur un socket TCP, mais je ne sais pas
|
||||||
|
encore si ça a une réelle influence.
|
||||||
|
|
||||||
|
### Les caractères de controle.
|
||||||
|
|
||||||
Stay tuned, film at 11.
|
Stay tuned, film at 11.
|
||||||
|
|
||||||
|
@ -1,17 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* EMC SRVTELNET
|
||||||
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
#define TL 20
|
#define BINDADDR "127.0.0.1"
|
||||||
|
#define TL 20
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int foo, len, sock;
|
int foo, len, sock;
|
||||||
char *adr_ip = "127.0.0.1";
|
char *adr_ip = BINDADDR;
|
||||||
int port = 5678;
|
int port = 5678;
|
||||||
unsigned int addrlen;
|
unsigned int addrlen;
|
||||||
int connected;
|
int connected;
|
||||||
|
Loading…
Reference in New Issue
Block a user