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.

View File

@ -1,8 +1,8 @@
#
# -------------------
# NETWORK EXPERIMENTS
#
# -------------------
COPT = -Wall -DDEBUG_LEVEL=1 -pthread
COPT = -Wall -DDEBUG_LEVEL=1 -g -pthread
# --------------------------------------------------
# Experimental Specialized Telnet Server
@ -10,3 +10,5 @@ COPT = -Wall -DDEBUG_LEVEL=1 -pthread
emc-tnetd: emc-tnetd.c Makefile
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
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.

View File

@ -1,17 +1,22 @@
/*
* EMC SRVTELNET
*/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define TL 20
#define BINDADDR "127.0.0.1"
#define TL 20
int main(int argc, char *argv[])
{
int foo, len, sock;
char *adr_ip = "127.0.0.1";
char *adr_ip = BINDADDR;
int port = 5678;
unsigned int addrlen;
int connected;