diff --git a/gtests/net/packetdrill/run_system_call.c b/gtests/net/packetdrill/run_system_call.c
index 1ec6d1a25acc7f3b92ea2c3f061bbf58497123a2..55a3fba1157980e953b4aa75639c542c832a9fec 100644
--- a/gtests/net/packetdrill/run_system_call.c
+++ b/gtests/net/packetdrill/run_system_call.c
@@ -4448,14 +4448,17 @@ static int syscall_setsockopt(struct state *state, struct syscall_spec *syscall,
 
 		if (get_sctp_assoc_t(val_expression->value.sctp_reset_streams->srs_assoc_id,
 				     &reset_streams->srs_assoc_id, error)) {
+			free(reset_streams);
 			return STATUS_ERR;
 		}
 		if (get_u16(val_expression->value.sctp_reset_streams->srs_flags,
 			    &reset_streams->srs_flags, error)) {
+			free(reset_streams);
 			return STATUS_ERR;
 		}
 		if (get_u16(val_expression->value.sctp_reset_streams->srs_number_streams,
 			    &reset_streams->srs_number_streams, error)) {
+			free(reset_streams);
 			return STATUS_ERR;
 		}
 
@@ -4463,7 +4466,14 @@ static int syscall_setsockopt(struct state *state, struct syscall_spec *syscall,
 			struct expression *expr;
 
 			expr = get_arg(list, i, error);
-			get_u16(expr, &(reset_streams->srs_stream_list[i]), error);
+			if (expr == NULL) {
+				free(reset_streams);
+				return STATUS_ERR;
+			}
+			if (get_u16(expr, &(reset_streams->srs_stream_list[i]), error)) {
+				free(reset_streams);
+				return STATUS_ERR;
+			}
 		}
 		optval = reset_streams;
 		if (!optlen_provided) {