Codice:
len = read(sockmsg,input,sizeof(input));
Il valore di ritorno chi lo controlla?
Buffer overflow se len=256. Metti nella read sizeof(input)-1.
Codice:
if (pthread_create(&mythread,NULL,gestore_richiesta,&sockmsg))
Race grossolana. Passi il _puntatore_ a sockmsg al secondo thread, ma sockmsg è una variabile del primo thread che può venire modificata senza preavviso!
Ecco l'origine dei tuoi guai. I thread condividono la tabella degli fd!
Quote:
|
len: 16777215 msg: 4��G,�� ��(H��thread -1209660512: ho chiuso la
|
19777215 vale 0x00ffffff. Dieci a uno che la read ha ritornato -1 a causa della close(sockmsg), e tu hai scritto input[-1] = '\0'.