/* Load the message list */
cdbfr = cdb_fetch(CDB_MSGLISTS, &CC->room.QRnumber, sizeof(long));
if (cdbfr != NULL) {
- Imap->msgids = malloc(cdbfr->len);
- memcpy(Imap->msgids, cdbfr->ptr, cdbfr->len);
+ Imap->msgids = (long*)cdbfr->ptr;
Imap->num_msgs = cdbfr->len / sizeof(long);
Imap->num_alloc = cdbfr->len / sizeof(long);
+ cdbfr->ptr = NULL;
+ cdbfr->len = 0;
cdb_free(cdbfr);
}
*/
cdbfr = cdb_fetch(CDB_MSGLISTS, &CC->room.QRnumber, sizeof(long));
if (cdbfr != NULL) {
- msglist = malloc(cdbfr->len + 1);
- if (msglist == NULL) {
- IMAPM_syslog(LOG_CRIT, "malloc() failed");
- CC->kill_me = KILLME_MALLOC_FAILED;
- return;
- }
- memcpy(msglist, cdbfr->ptr, (size_t)cdbfr->len);
+ msglist = (long*)cdbfr->ptr;
+ cdbfr->ptr = NULL;
num_msgs = cdbfr->len / sizeof(long);
+ cdbfr->len = 0;
cdb_free(cdbfr);
} else {
num_msgs = 0;
(Imap->num_msgs - i)));
memmove(&Imap->flags[i],
&Imap->flags[i + 1],
- (sizeof(long) *
+ (sizeof(unsigned int) *
(Imap->num_msgs - i)));
-
--i;
}
{
citimap *Imap = IMAP;
const char *decoded_authstring;
- char ident[256];
- char user[256];
- char pass[256];
+ char ident[256] = "";
+ char user[256] = "";
+ char pass[256] = "";
int result;
long len;
memset(pass, 0, sizeof(pass));
- StrBufDecodeBase64(Imap->Cmd.CmdBuf);
+ len = StrBufDecodeBase64(Imap->Cmd.CmdBuf);
+
+ if (len > 0)
+ {
+ decoded_authstring = ChrPtr(Imap->Cmd.CmdBuf);
+
+ len = safestrncpy(ident, decoded_authstring, sizeof ident);
+
+ decoded_authstring += len + 1;
- decoded_authstring = ChrPtr(Imap->Cmd.CmdBuf);
- safestrncpy(ident, decoded_authstring, sizeof ident);
- safestrncpy(user, &decoded_authstring[strlen(ident) + 1], sizeof user);
- len = safestrncpy(pass, &decoded_authstring[strlen(ident) + strlen(user) + 2], sizeof pass);
- if (len < 0)
- len = sizeof(pass) - 1;
+ len = safestrncpy(user, decoded_authstring, sizeof user);
+ decoded_authstring += len + 1;
+
+ len = safestrncpy(pass, decoded_authstring, sizeof pass);
+ if (len < 0)
+ len = sizeof(pass) - 1;
+ }
Imap->authstate = imap_as_normal;
if (!IsEmptyStr(ident)) {