From 0dc7a67fb62b2aac82ff1c03319bd4976c56dbc1 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 25 Oct 2010 19:26:34 +0100 Subject: [PATCH] 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. --- src/lib-storage/index/dbox-common/dbox-mail.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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; } -- 2.47.3