Memleaksearch
authorWilfried Goesgens <dothebart@citadel.org>
Sat, 3 Dec 2011 10:07:16 +0000 (11:07 +0100)
committerWilfried Goesgens <dothebart@citadel.org>
Sat, 3 Dec 2011 10:07:16 +0000 (11:07 +0100)
  - malloc a length in every case by adding a bonus byte
  - check for whether we have a pointer or not.

citadel/modules/imap/serv_imap.c

index eab1e8571803cc11f754321e9a565d27781d8bd1..7cf4bb948452460fbda6bea831e2e964c44f1c7b 100644 (file)
@@ -366,7 +366,7 @@ void imap_rescan_msgids(void)
         */
        cdbfr = cdb_fetch(CDB_MSGLISTS, &CC->room.QRnumber, sizeof(long));
        if (cdbfr != NULL) {
-               msglist = malloc(cdbfr->len);
+               msglist = malloc(cdbfr->len + 1);
                if (msglist == NULL) {
                        syslog(LOG_CRIT, "IMAP: malloc() failed");
                        CC->kill_me = KILLME_MALLOC_FAILED;
@@ -460,7 +460,7 @@ void imap_rescan_msgids(void)
                IAPrintf("* %d RECENT\r\n", num_recent);
        }
 
-       if (num_msgs != 0) {
+       if (msglist != NULL) {
                free(msglist);
        }
        Imap->last_mtime = CC->room.QRmtime;