diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 91e81042942dc91802f6eee1edf4c0798186ea1f..1d7ffc042a420ccb9b6844c4f8f643a12860df6a 100644
--- a/apps/app_voicemail.c
+++ b/apps/app_voicemail.c
@@ -11190,7 +11190,7 @@ static int vm_authenticate(struct ast_channel *chan, char *mailbox, int mailbox_
 		return -1;
 	}
 	if (vmu && !skipuser) {
-		memcpy(res_vmu, vmu, sizeof(struct ast_vm_user));
+		*res_vmu = *vmu;
 	}
 	return 0;
 }
@@ -11352,8 +11352,8 @@ static int vm_execmain(struct ast_channel *chan, const char *data)
 	int box;
 	int useadsi = 0;
 	int skipuser = 0;
-	struct vm_state vms;
-	struct ast_vm_user *vmu = NULL, vmus;
+	struct vm_state vms = {{0}};
+	struct ast_vm_user *vmu = NULL, vmus = {{0}};
 	char *context = NULL;
 	int silentexit = 0;
 	struct ast_flags flags = { 0 };
@@ -11366,12 +11366,8 @@ static int vm_execmain(struct ast_channel *chan, const char *data)
 #endif
 
 	/* Add the vm_state to the active list and keep it active */
-	memset(&vms, 0, sizeof(vms));
-
 	vms.lastmsg = -1;
 
-	memset(&vmus, 0, sizeof(vmus));
-
 	ast_test_suite_event_notify("START", "Message: vm_execmain started");
 	if (ast_channel_state(chan) != AST_STATE_UP) {
 		ast_debug(1, "Before ast_answer\n");
@@ -12664,7 +12660,7 @@ static struct ast_custom_function vm_info_acf = {
 static int vmauthenticate(struct ast_channel *chan, const char *data)
 {
 	char *s, *user = NULL, *context = NULL, mailbox[AST_MAX_EXTENSION] = "";
-	struct ast_vm_user vmus;
+	struct ast_vm_user vmus = {{0}};
 	char *options = NULL;
 	int silent = 0, skipuser = 0;
 	int res = -1;