[asterisk-bugs] [JIRA] (ASTERISK-23713) Voicemail on FS overwrites last message when last index = MSGLIMIT

Miguel Tavares (JIRA) noreply at issues.asterisk.org
Sun May 4 12:20:43 CDT 2014


    [ https://issues.asterisk.org/jira/browse/ASTERISK-23713?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=217896#comment-217896 ] 

Miguel Tavares edited comment on ASTERISK-23713 at 5/4/14 12:20 PM:
--------------------------------------------------------------------

The patch presented only limits the effect of the issue. If the user get's to have a message 9999 the same issue will arise and either the last message is overwritten or the user can't receive more messages.

Some discussion on how to better solve this might be needed.

On possible solution is to just try to find the first empty msg slot (for example if user as a msg 0002 and 0003 then the next message would be 0001, the one after would be 0004). This breaks the relationship between the ID of the messages and the order of reception so the user might get confused.

If it's ok then I can try to look more carefully into the code and create a patch for using the reuse of empty msg slots.


was (Author: mtavares):
The patch presented only limits the effect of the user. If the user get's to have a message 9999 the same issue will arise and either the last message is overwritten or the user can't receive more messages.

Some discussion on how to better solve this might be needed.

On possible solution is to just try to find the first empty msg slot (for example if user as a msg 0002 and 0003 then the next message would be 0001, the one after would be 0004). This breaks the relationship between the ID of the messages and the order of reception so the user might get confused.

If it's ok then I can try to look more carefully into the code and create a patch for using the reuse of empty msg slots.

> Voicemail on FS overwrites last message when last index = MSGLIMIT
> ------------------------------------------------------------------
>
>                 Key: ASTERISK-23713
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-23713
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Applications/app_voicemail
>    Affects Versions: SVN, 12.2.0
>         Environment: app_voicemail delivery on filesystem.
> Any asterisk supported platform is probably affected.
>            Reporter: Miguel Tavares
>            Assignee: Miguel Tavares
>
> When leaving a voicemail the function last_message_index will stop at index only until the default or configured max messages (vmu->maxmsg) although it should continue until MAXMSGLIMIT.
> Example, let's say the asterisk admin set the maximum messages to 10, the user received 10 messages and then deleted 9 apart from the last one. In the filesystem the files msg0010.txt and msg0010.wav will be present.
> The last_message_index will detect that that's the only message available but then  when finding out what's the index it will stop at 9 (the configure maximum when counting from 0) and return that as the last message index, making he voicemail app to overwrite the previous existing last message.
> Possible fix, in app_voicemail.c
> 112a113
> > #include <string.h>
> 4434c4435
> <       unsigned char map[MAXMSGLIMIT] = "";
> ---
> >       unsigned char map[MAXMSGLIMIT];
> 4440a4442
> >     memset (map, 0, sizeof(map)); //set the memory to 0 for Safety sake.
> 4458c4460
> <       for (x = 0; x < vmu->maxmsg; x++) {
> ---
> >       for (x = 0; x < MAXMSGLIMIT; x++) {
> The important change is running the for cycle until MAXMSGLIMIT but as far as I know there's no guarantee that memory allocated in the stack is zeroed so that's why I also included the memset call.



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list