Buongiorno credo di aver trovato un bug nella funzione C recvfrom di ubuntu 16.04(ma lo stesso vale per Debian 8 ), in pratica la funzione in alcuni casi può scrivere in zone di memoria che non sono di sua competenza andando ad esempio ad azzerare altre variabili.
Come posso vedere se questo bug è stato già segnalato ed eventualmente segnalarlo?
In particolare dopo molti tentativi ho notato che eseguendo il server_udp( server_udp nporta) all inizio non da problemi ma appena eseguo il client(client_udp localhost nporta) scrivo qualcosa e premo invio ,cioè non appena viene eseguita la recvfrom una parametro cambia valore da 1 a zero senza motivo, se non aggiungevo quel parametro invece veniva cambiato il valore di sockfd e il programma ovviamente si bloccava.
[risolto] bug funzione recvfrom di C in Ubuntu 16.04
[risolto] bug funzione recvfrom di C in Ubuntu 16.04
- Allegati
-
- client_udp.c
- (2.26 KiB) Scaricato 78 volte
-
- server_udp.c
- (1.82 KiB) Scaricato 67 volte
Ultima modifica di ro0t il lunedì 23 gennaio 2017, 15:32, modificato 1 volta in totale.
Re: Bug funzione recvfrom di C in Ubuntu 16.04
Non e' un bug della funzione di libreria, ma un bug nel tuo codice:
cliaddr e' gia puntatore e non devi fare nessuna risoluzione di riferimento.
Lo stesso errore lo ritrovi nella funzione sendto
Codice: Seleziona tutto
void my_echo(int p, int sockfd,int s,struct sockaddr *cliaddr, socklen_t clilen)
{
....
n = recvfrom(sockfd, msg,MAXLINE-1,0 ,(struct sockaddr *) cliaddr, &len);
Lo stesso errore lo ritrovi nella funzione sendto
Re: [risolto] non Bug funzione recvfrom di C in Ubuntu 16.04
Grazie mille, questa sintassi era nel codice che mi era stato dato ed avevo dato per scontato che fosse giusta
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 11 ospiti