From 2b0737732884831d246b622b9b06ae29b236af9f Mon Sep 17 00:00:00 2001
From: David Maloney <DMaloney@rapid7.com>
Date: Tue, 2 Jun 2015 12:44:49 -0500
Subject: [PATCH] fix copy error

use strncpy not memcpy to transfer the re-encoded
name and description into our account object.
also use sizeof for precise copy size. eliminates lingering
errors

MSP-12356
---
 c/meterpreter/source/extensions/priv/server/ntds_jet.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/c/meterpreter/source/extensions/priv/server/ntds_jet.c b/c/meterpreter/source/extensions/priv/server/ntds_jet.c
index ca9c8fb2..8ae682c3 100755
--- a/c/meterpreter/source/extensions/priv/server/ntds_jet.c
+++ b/c/meterpreter/source/extensions/priv/server/ntds_jet.c
@@ -225,7 +225,7 @@ JET_ERR read_user(struct jetState *ntdsState, struct ntdsColumns *accountColumns
 	if (readStatus != JET_errSuccess){
 		return readStatus;
 	}
-	memcpy(&userAccount->accountName, wchar_to_utf8(accountName), 20);
+	strncpy(userAccount->accountName, wchar_to_utf8(accountName), sizeof(userAccount->accountName));
 	// Grab the Account Description here
 	wchar_t accountDescription[1024] = { 0x00 };
 	readStatus = JetRetrieveColumn(ntdsState->jetSession, ntdsState->jetTable, accountColumns->accountDescription.columnid, &accountDescription, sizeof(accountDescription), &columnSize, 0, NULL);
@@ -235,7 +235,7 @@ JET_ERR read_user(struct jetState *ntdsState, struct ntdsColumns *accountColumns
 	else if (readStatus != JET_errSuccess){
 		return readStatus;
 	}
-	memcpy(&userAccount->accountDescription, wchar_to_utf8(accountDescription), 1024);
+	strncpy(userAccount->accountDescription, wchar_to_utf8(accountDescription), sizeof(userAccount->accountDescription));
 	// Grab the UserAccountControl flags here
 	readStatus = JetRetrieveColumn(ntdsState->jetSession, ntdsState->jetTable, accountColumns->accountControl.columnid, &accountControl, sizeof(accountControl), &columnSize, 0, NULL);
 	if (readStatus != JET_errSuccess){