diff --git a/gtests/net/packetdrill/sctp_packet.c b/gtests/net/packetdrill/sctp_packet.c
index cba5fce979775bb19ae9b6edb912cade20109b14..5d193032cb11e580f5e8d060286bb9663aea6f91 100644
--- a/gtests/net/packetdrill/sctp_packet.c
+++ b/gtests/net/packetdrill/sctp_packet.c
@@ -2690,9 +2690,9 @@ sctp_unresolvable_address_cause_new(struct sctp_parameter_list_item *item)
 			flags |= FLAG_CAUSE_LENGTH_NOCHECK;
 		}
 		memcpy(cause->parameter, item->parameter, item->length);
+		memset(cause->parameter + item->length, 0, padding_length);
+		free(item);
 	}
-	memset(cause->parameter + item->length, 0, padding_length);
-	free(item);
 	return sctp_cause_list_item_new((struct sctp_cause *)cause,
 	                                length, flags);
 }