diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c
index a4d0bffa7fc3c22791648534b5b4919bbe13b9ea..62372161c5dfe244b66349eb2c19934bda575444 100644
--- a/src/common/slurm_protocol_defs.c
+++ b/src/common/slurm_protocol_defs.c
@@ -767,6 +767,9 @@ extern void slurm_free_job_desc_msg(job_desc_msg_t * msg)
 		xfree(msg->qos);
 		xfree(msg->std_out);
 		xfree(msg->partition);
+		for (i = 0; i < msg->pelog_env_size; i++)
+			xfree(msg->pelog_env[i]);
+		xfree(msg->pelog_env);
 		xfree(msg->ramdiskimage);
 		xfree(msg->req_nodes);
 		xfree(msg->reservation);
@@ -801,6 +804,9 @@ extern void slurm_free_prolog_launch_msg(prolog_launch_msg_t * msg)
 		xfree(msg->alias_list);
 		xfree(msg->nodes);
 		xfree(msg->partition);
+		for (i = 0; i < msg->pelog_env_size; i++)
+			xfree(msg->pelog_env[i]);
+		xfree(msg->pelog_env);
 		xfree(msg->std_err);
 		xfree(msg->std_out);
 		xfree(msg->work_dir);
@@ -850,6 +856,12 @@ extern void slurm_free_job_launch_msg(batch_job_launch_msg_t * msg)
 			xfree(msg->argv);
 		}
 
+		if (msg->pelog_env) {
+			for (i = 0; i < msg->pelog_env_size; i++)
+				xfree(msg->pelog_env[i]);
+			xfree(msg->pelog_env);
+		}
+
 		if (msg->spank_job_env) {
 			for (i = 0; i < msg->spank_job_env_size; i++)
 				xfree(msg->spank_job_env[i]);
@@ -867,6 +879,7 @@ extern void slurm_free_job_launch_msg(batch_job_launch_msg_t * msg)
 
 		slurm_cred_destroy(msg->cred);
 		xfree(msg->resv_name);
+		xfree(msg->resv_ports);
 		xfree(msg);
 	}
 }
@@ -1171,6 +1184,9 @@ extern void slurm_free_launch_tasks_request_msg(launch_tasks_request_msg_t * msg
 		}
 		xfree(msg->argv);
 	}
+	for (i = 0; i < msg->pelog_env_size; i++)
+		xfree(msg->pelog_env[i]);
+	xfree(msg->pelog_env);
 	for (i = 0; i < msg->spank_job_env_size; i++) {
 		xfree(msg->spank_job_env[i]);
 	}