1 .Attenzione mio caro questa funzione è VULNERABILE ad un attacco di BUFFER OVERFLOW, con il quale un ipotetico "malintenzionato" puo eseguire del codice macchina DA REMOTO.
Quindi correggi per favore![]()
2. In questa funzione tutti i *(newPeer).nome PUNTERANNO a name, ma NON CONTERANNO il suo valore, stessa cosa per *(newPeer).ip. Devi USARE la strncpycodice:void readName(int socketID) { char a; char buffer[MAXSIZE]; int i=0; while(read(socketID,&a,1) > 0){ if(a!='!') buffer[i++]=a; else break; } buffer[i]='\0'; fflush(stdout); iP = getPeerIP(socketID); //sendList(socketID); insertPeerToList(iP, buffer); }
3. Se firstElement è un puntatore allora:codice:void insertPeerToList(char *iP, char *name){ PEERPTR newPeer= malloc(sizeof(PEER)); newPeer->nome=name; newPeer->ip= iP; PEERPTR temp; temp = firstElement; if(temp!=NULL){ while(temp->next != NULL) temp=temp->next; temp->next=newPeer; } else firstElement=newPeer; printList(); }
è sbagliato, se invece non è un puntatore, allora:codice:temp = firstElement;
è sbagliatocodice:firstElement = newPeer;
4. temp non è un puntatore ...
Stai attento quando scrivi codice, soprattuto se server-side. Poi mi chiedo come mai il tuo compilatore non ti abbia segnalato certi erroraccicodice:if(temp!=NULL){ while(temp->next != NULL) temp=temp->next; temp->next=newPeer; } }![]()
![]()

Rispondi quotando