[Sheepdog] [PATCH] shepherd: fix debug lock_vdi and release_vdi

FUJITA Tomonori fujita.tomonori at lab.ntt.co.jp
Mon Apr 12 16:28:55 CEST 2010


Signed-off-by: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
---
 shepherd/shepherd.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/shepherd/shepherd.c b/shepherd/shepherd.c
index fb554b0..cc06908 100644
--- a/shepherd/shepherd.c
+++ b/shepherd/shepherd.c
@@ -322,10 +322,13 @@ static int debug(char *op, char *arg)
 	unsigned rlen, wlen;
 	unsigned opcode, flags;
 	uint64_t oid = 0;
+	char vdiname[SD_MAX_VDI_LEN];
 
 	if (!op)
 		return 1;
 
+	memset(vdiname, 0, sizeof(vdiname));
+
 	strcpy(name, "localhost");
 
 	if (!strcasecmp(op, "node_version")) {
@@ -344,16 +347,20 @@ static int debug(char *op, char *arg)
 		if (!arg)
 			return 1;
 		rlen = 0;
-		wlen = strlen(arg) + 1;
+		strncpy(vdiname, arg, sizeof(vdiname));
+		wlen = sizeof(vdiname);
 		opcode = SD_OP_LOCK_VDI;
 		flags = SD_FLAG_CMD_WRITE;
+		arg = vdiname;
 	} else if (!strcasecmp(op, "release_vdi")) {
 		if (!arg)
 			return 1;
 		rlen = 0;
-		wlen = strlen(arg) + 1;
+		strncpy(vdiname, arg, sizeof(vdiname));
+		wlen = sizeof(vdiname);
 		opcode = SD_OP_RELEASE_VDI;
 		flags = SD_FLAG_CMD_WRITE;
+		arg = vdiname;
 	} else if (!strcasecmp(op, "vdi_info")) {
 		if (!arg)
 			return 1;
-- 
1.6.5




More information about the sheepdog mailing list