From: Timo Sirainen Date: Mon, 25 Oct 2010 18:26:34 +0000 (+0100) Subject: dbox: mail_get_special() for POP3 UIDL or GUID return value wasn't permanent enough. X-Git-Tag: 2.0.7~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0dc7a67fb62b2aac82ff1c03319bd4976c56dbc1;p=thirdparty%2Fdovecot%2Fcore.git dbox: mail_get_special() for POP3 UIDL or GUID return value wasn't permanent enough. Another call to mail_get_*() could have caused the string to point to some garbage. --- diff --git a/src/lib-storage/index/dbox-common/dbox-mail.c b/src/lib-storage/index/dbox-common/dbox-mail.c index af378982f5..7076a6374f 100644 --- a/src/lib-storage/index/dbox-common/dbox-mail.c +++ b/src/lib-storage/index/dbox-common/dbox-mail.c @@ -187,7 +187,12 @@ dbox_get_cached_metadata(struct dbox_mail *mail, enum dbox_metadata_key key, value = ""; index_mail_cache_add_idx(imail, ibox->cache_fields[cache_field].idx, value, strlen(value)+1); - *value_r = value; + + /* don't return pointer to dbox metadata directly, since it may + change unexpectedly */ + str_truncate(str, 0); + str_append(str, value); + *value_r = str_c(str); return 0; }