fgets investigations

This commit is contained in:
tTh 2023-07-15 09:19:50 +02:00
parent aeeefe061d
commit 8ba88d2b8d
4 changed files with 22 additions and 9 deletions

View File

@ -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.

View File

@ -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 $@
# --------------------------------------------------

View File

@ -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.

View File

@ -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;