summaryrefslogtreecommitdiff
path: root/apps/app_voicemail.c
diff options
context:
space:
mode:
authorSean Bright <sean.bright@gmail.com>2017-02-20 07:28:23 -0500
committerSean Bright <sean.bright@gmail.com>2017-02-20 15:09:35 -0600
commitb18f1bfb13a9cd20ea16d07d8ed78e2669282cc4 (patch)
treec099d319e39c63727102e7d19d18773377e3b9b7 /apps/app_voicemail.c
parent496a7b0b4ce6d6b3d3bc4fd98a4df99c1e7f0c25 (diff)
app_voicemail: vm_authenticate accesses uninitialized memory
vm_authenticate doesn't always set the passed ast_vm_user argument, so we initialize to 0 before passing it in. ASTERISK-25893 #close Reported by: Filip Jenicek Change-Id: Ia3cc0128f93d352ed9add8d5c2f0f7232c2cbe4a
Diffstat (limited to 'apps/app_voicemail.c')
-rw-r--r--apps/app_voicemail.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c
index 91e810429..1d7ffc042 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;