diff --git a/lib/iscsi/iscsi.c b/lib/iscsi/iscsi.c index da574cb87..185e165aa 100644 --- a/lib/iscsi/iscsi.c +++ b/lib/iscsi/iscsi.c @@ -2394,6 +2394,7 @@ spdk_iscsi_op_text(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu) } else { if (spdk_iscsi_param_eq_val(conn->sess->params, "SessionType", "Discovery")) { + spdk_iscsi_param_free(*params_p); free(data); return SPDK_ISCSI_CONNECTION_FATAL; } @@ -2403,6 +2404,11 @@ spdk_iscsi_op_text(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu) /* response PDU */ rsp_pdu = spdk_get_pdu(); + if (rsp_pdu == NULL) { + spdk_iscsi_param_free(*params_p); + free(data); + return SPDK_ISCSI_CONNECTION_FATAL; + } rsph = (struct iscsi_bhs_text_resp *)&rsp_pdu->bhs; rsp_pdu->data = data;