From 486e0233b71998f9d291fba6c4099ca5a5c11d6f Mon Sep 17 00:00:00 2001
From: David Bigagli <david@schedmd.com>
Date: Wed, 8 May 2013 14:42:32 -0700
Subject: [PATCH] Bug#284 Fix invalid memory read.

---
 .../slurmdbd/accounting_storage_slurmdbd.c               | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c b/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c
index 7b17bf90dc0..0a154339d15 100644
--- a/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c
+++ b/src/plugins/accounting_storage/slurmdbd/accounting_storage_slurmdbd.c
@@ -130,6 +130,9 @@ static void _partial_free_dbd_job_start(void *object)
 		xfree(req->partition);
 		xfree(req->node_inx);
 		xfree(req->wckey);
+		xfree(req->gres_alloc);
+		xfree(req->gres_req);
+		xfree(req->gres_used);
 	}
 }
 
@@ -199,9 +202,9 @@ static int _setup_job_start_msg(dbd_job_start_msg_t *req,
 	req->wckey         = xstrdup(job_ptr->wckey);
 	req->uid           = job_ptr->user_id;
 	req->qos_id        = job_ptr->qos_id;
-	req->gres_alloc    = job_ptr->gres_alloc;
-	req->gres_req      = job_ptr->gres_req;
-	req->gres_used     = job_ptr->gres_used;
+	req->gres_alloc    = xstrdup(job_ptr->gres_alloc);
+	req->gres_req      = xstrdup(job_ptr->gres_req);
+	req->gres_used     = xstrdup(job_ptr->gres_used);
 
 	return SLURM_SUCCESS;
 }
-- 
GitLab