Fix packet length validation
This commit is contained in:
		
							parent
							
								
									545d31a54a
								
							
						
					
					
						commit
						f944f320b9
					
				
					 1 changed files with 5 additions and 2 deletions
				
			
		
							
								
								
									
										7
									
								
								nmrp.c
									
										
									
									
									
								
							
							
						
						
									
										7
									
								
								nmrp.c
									
										
									
									
									
								
							|  | @ -276,10 +276,13 @@ static int pkt_recv(struct ethsock *sock, struct nmrp_pkt *pkt) | |||
| 
 | ||||
| 	len = ntohs(pkt->msg.len) + sizeof(pkt->eh); | ||||
| 
 | ||||
| 	if (bytes != len) { | ||||
| 		fprintf(stderr, "Unexpected packet length (expected %d, got %d).\n", | ||||
| 	if (bytes < len) { | ||||
| 		fprintf(stderr, "Short packet (expected %d, got %d).\n", | ||||
| 				(int)len, (int)bytes); | ||||
| 		return 1; | ||||
| 	} else if (bytes > sizeof(pkt->msg) + sizeof(pkt->eh)) { | ||||
| 		fprintf(stderr, "Packet size exceeds maximum (got %d).\n", | ||||
| 				(int)bytes); | ||||
| 	} | ||||
| 
 | ||||
| 	return 0; | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue