diff options
author | Sean Bright <sean.bright@gmail.com> | 2017-02-20 07:28:23 -0500 |
---|---|---|
committer | Sean Bright <sean.bright@gmail.com> | 2017-02-20 15:09:35 -0600 |
commit | b18f1bfb13a9cd20ea16d07d8ed78e2669282cc4 (patch) | |
tree | c099d319e39c63727102e7d19d18773377e3b9b7 /apps/app_voicemail.c | |
parent | 496a7b0b4ce6d6b3d3bc4fd98a4df99c1e7f0c25 (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.c | 12 |
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; |