From 8cc80b4af95a6220af8a7228520578670aa2031b Mon Sep 17 00:00:00 2001
From: Michael Tuexen <tuexen@fh-muenster.de>
Date: Sat, 7 Oct 2017 15:50:48 +0200
Subject: [PATCH] Fix CID 187669.

---
 gtests/net/packetdrill/run_system_call.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/gtests/net/packetdrill/run_system_call.c b/gtests/net/packetdrill/run_system_call.c
index 1ec6d1a2..55a3fba1 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) {
-- 
GitLab