diff --git a/gtests/net/packetdrill/tcp_packet.c b/gtests/net/packetdrill/tcp_packet.c
index 62b6070a722db901ea10f8d9523a8d75ce355f51..1292b5975505325fe58558962877628a4354e509 100644
--- a/gtests/net/packetdrill/tcp_packet.c
+++ b/gtests/net/packetdrill/tcp_packet.c
@@ -157,6 +157,7 @@ struct packet *new_tcp_packet(int address_family,
 		if (direction == DIRECTION_INBOUND) {
 			asprintf(error, "window must be specified"
 				 " for inbound packets");
+			packet_free(packet);
 			return NULL;
 		}
 		packet->tcp->window = 0;