Salve a tutti...
è da una settimana che cerco di risolvere questo problema ma non so proprio da cosa possa dipendere; sto cercando di scrivere un programma che gestisca una elenco telefonico.
Ho scritto una funzione "aggiungiRecord" che dopo essere stata eseguita mi lancia l'errore seguente:


codice:
Run-Time Check Failure #2-Stack around the variable 'record' was corrupted
il codice è :

codice:
int aggiungiRecord(int sock){  		
Record record;  		
char permessi[RISPOSTA];         
char risposta[RISPOSTA];  		                    
/* Invio al server il tipo di servizio desiderato */  
           while(send(sock, "AGGIUNGI", RISPOSTA,0) <= 0){                    
 if(errno != EINTR){                             
if(errno == ECONNRESET || errno == EPIPE){                                     
printf("\n\nCONNESSIONE INTERROTTA, il server si è disconnesso in maniera scorretta!");fflush(stdout);                                     
return -1;                             }                             
else{                                    
 printf("Lettura fallita\n");fflush(stdout);                                    
 perror("Errore tipo");fflush(stdout);                                     
return -1;                             
}                     
}                     
printf("Errore durante la system call, ripeto\n");fflush(stdout);             }  			                                      

/* Resetto il valore della stringa permessi */  
           memset(permessi, 0, strlen(permessi));                   
/* Ricevo il tipo di permesso dal server */             
while(recv(sock, permessi, RISPOSTA,0) <= 0){                    
 if(errno != EINTR){                            
 if(errno == ECONNRESET || errno == EPIPE){                                     
printf("\n\nCONNESSIONE INTERROTTA, il server si è disconnesso in maniera scorretta!");fflush(stdout);                                    
 return -1;                             
}                             
else{                                     
printf("Lettura fallita\n");fflush(stdout);                                    
 perror("Errore tipo");fflush(stdout);                                    
 return -1;                             
}                     
}                     
printf("Errore durante la system call, ripeto\n");fflush(stdout);            
 }                   

/* Ho i permessi sufficienti per questa operazione */             
if(strcmp("NO", permessi) != 0){                           

/* Resetto i valori della struct recordTemp */ 					
memset(record.nome, 0, sizeof(record.nome)); 					memset(record.cognome, 0, sizeof(record.cognome)); 					memset(record.numeroTelefono, 0, sizeof(record.numeroTelefono));  
                                       
/* Resetto il valore della stringa risposta */                     
memset(risposta, 0, RISPOSTA);                            
/* Digito il nome da aggiungere */                     
printf("\nInserisci nome e premi INVIO   ");fflush(stdout);                    
 while(scanf("%s", record.nome) == -1){                            
 if(errno != EINTR){                                     
printf("\nErrore scanf\n");                                    
 chiusuraClient();                             
}                     
}                           
/* Invio il nome al server */                     
while(send(sock, record.nome,strlen(record.nome),0) <= 0){                            
 if(errno != EINTR){                                     
if(errno == ECONNRESET || errno == EPIPE){                                             
printf("\n\nCONNESSIONE INTERROTTA, il server si è disconnesso in maniera scorretta!");fflush(stdout);                                             
return -1;                                     
}                                     
else{                                            
 printf("Lettura fallita\n");fflush(stdout);                                             
perror("Errore tipo");fflush(stdout); 
                                            return -1;                                     
}                            
 }                             
printf("Errore durante la system call, ripeto\n");fflush(stdout);                     }                           
/* Digito il cognome da aggiungere */ 
                    printf("\nInserisci cognome e premi INVIO   ");fflush(stdout);                     while(scanf("%s", record.cognome) == -1){                             
if(errno != EINTR){                                     
printf("\nErrore scanf\n");                                    
 chiusuraClient();                             
}                     
}                           
/* Invio il cognome al server */                    

 while(send(sock, record.cognome, strlen(record.cognome),0) <= 0){
                             if(errno != EINTR){
                                     if(errno == ECONNRESET || errno == EPIPE){
                                             printf("\n\nCONNESSIONE INTERROTTA, il server si è disconnesso in maniera scorretta!");fflush(stdout);                                             
return -1;                                     
}                                    
 else{                                             
printf("Lettura fallita\n");fflush(stdout);
                                             perror("Errore tipo");fflush(stdout);
                                             return -1;                                     }                             }                             
printf("Errore durante la system call, ripeto\n");fflush(stdout);                     }                                 
/* Digito il numero di telefono da aggiungere */
                     printf("\nInserisci numero di telefono e premi INVIO   ");fflush(stdout);                    
 while(scanf("%s", record.numeroTelefono) == -1){                             
if(errno != EINTR){                                     
printf("\nErrore scanf\n");                                     
chiusuraClient();                             
}                     
}                          
 /* Invio il numero di telefono al server */                     
while(send(sock, record.numeroTelefono, strlen(record.numeroTelefono),0) <= 0){                             
if(errno != EINTR){                                    
 if(errno == ECONNRESET || errno == EPIPE){                                             
printf("\n\nCONNESSIONE INTERROTTA, il server si è disconnesso in maniera scorretta!");fflush(stdout);                                            
 return -1;                                     
}                                     
else{                                             
printf("Lettura fallita\n");fflush(stdout);                                            
 perror("Errore tipo");fflush(stdout);                                            
 return -1;                                    
 }                             
}                            
 printf("Errore durante la system call, ripeto\n");fflush(stdout);                     }                                 
/* Ricevo la risposta dal server */                     
while(recv(sock, risposta, RISPOSTA,0) <= 0){                             
if(errno != EINTR){                                    
 if(errno == ECONNRESET || errno == EPIPE){                                             
printf("\n\nCONNESSIONE INTERROTTA, il server si è disconnesso in maniera scorretta!");fflush(stdout);                                            
 return -1;                                     
}                                     
else{                                             
printf("Lettura fallita Numero tel\n");fflush(stdout);                                             perror("Errore tipo");fflush(stdout);                                             
return -1;                                     
}                             
}                             
printf("Errore durante la system call, ripeto\n");fflush(stdout);                     
}
                           /* Il record è già  presente nell'archivio */                     if(strcmp(risposta, "NO") == 0){                            
 printf("\nTentativo fallito. Record già  presente nell'archivio!\n");fflush(stdout);                             
premiInvio();                             
return 1;                     
}                           
/* Operazione conclusa con successo */                     
else{                             
printf("\nOperazione conclusa con successo!\n");fflush(stdout);                             premiInvio();                            
 return 1;                     
}             
}                        
 /* Non ho i permessi sufficienti per questa operazione */             
else{                    
 printf("\nPermessi non sufficienti per quest'operazione!\n");                     premiInvio();                     
return 1;             
}     
}
mentre la struct di Record l'ho scritta così:

codice:
 typedef struct{
             char nome[NOME];             
             char cognome[COGNOME];             
             char numeroTelefono[NUMERO];     
             }Record;

vi prego datemi una mano...non so proprio come risolvere...grazie!!!