Merged revisions 306866 via svnmerge from
authorJeff Peeler <jpeeler@digium.com>
Tue, 8 Feb 2011 16:22:07 +0000 (16:22 +0000)
committerJeff Peeler <jpeeler@digium.com>
Tue, 8 Feb 2011 16:22:07 +0000 (16:22 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r306866 | jpeeler | 2011-02-08 10:21:45 -0600 (Tue, 08 Feb 2011) | 16 lines

  Merged revisions 306865 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2

  ................
    r306865 | jpeeler | 2011-02-08 10:21:25 -0600 (Tue, 08 Feb 2011) | 9 lines

    Merged revisions 306864 via svnmerge from
    https://origsvn.digium.com/svn/asterisk/branches/1.4

    ........
      r306864 | jpeeler | 2011-02-08 10:19:17 -0600 (Tue, 08 Feb 2011) | 1 line

      make this safer and fully correct, pointed out by Steve Davis
    ........
  ................
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@306867 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_voicemail.c

index 7223d3d..25fcb09 100644 (file)
@@ -3916,7 +3916,7 @@ static int last_message_index(struct ast_vm_user *vmu, char *dir)
        DIR *msgdir;
        struct dirent *msgdirent;
        int msgdirint;
-       char extension[3];
+       char extension[4];
        int stopcount = 0;
 
        /* Reading the entire directory into a file map scales better than
@@ -3928,7 +3928,7 @@ static int last_message_index(struct ast_vm_user *vmu, char *dir)
        }
 
        while ((msgdirent = readdir(msgdir))) {
-               if (sscanf(msgdirent->d_name, "msg%30d.%3s", &msgdirint, extension) == 2 && msgdirint < MAXMSGLIMIT && !strcmp(extension, "txt")) {
+               if (!strcmp(extension, "txt") && msgdirint < MAXMSGLIMIT && sscanf(msgdirent->d_name, "msg%10d.%3s", &msgdirint, extension) == 2) {
                        map[msgdirint] = 1;
                        stopcount++;
                        ast_debug(4, "%s map[%d] = %d, count = %d\n", dir, msgdirint, map[msgdirint], stopcount);