]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Fix ownership issue
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 6 Oct 2021 09:39:20 +0000 (10:39 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 6 Oct 2021 09:39:20 +0000 (10:39 +0100)
src/libmime/received.cxx
src/libmime/received.hxx

index 3dd972f912f63200c4617763920b9d17cb5b4450..550823a4d9b11bb2b1087a91d9168a8d14a1d6e2 100644 (file)
@@ -629,15 +629,9 @@ received_header_parse(received_header_chain &chain, rspamd_mempool_t *pool,
                        }
                        break;
                case received_part_type::RSPAMD_RECEIVED_PART_FOR:
-                       rh.for_addr = rspamd_email_address_from_smtp(part.data.data(),
-                                       part.data.size());
-
-                       if (rh.for_addr) {
-                               if (rh.for_addr->addr_len > 0) {
-                                       rh.for_mbox = std::string_view{rh.for_addr->addr,
-                                                                                                  rh.for_addr->addr_len};
-                               }
-                       }
+                       rh.for_mbox.assign_copy(part.data);
+                       rh.for_addr = rspamd_email_address_from_smtp(rh.for_mbox.data(),
+                                       rh.for_mbox.size());
                        break;
                default:
                        /* Do nothing */
index 20164329ff0db783d18bed9eb7969404b85dbb09..98d46770b443f2080520bff14e607ac052cf1a4d 100644 (file)
@@ -103,7 +103,7 @@ struct received_header {
        mime_string real_hostname;
        mime_string real_ip;
        mime_string by_hostname;
-       std::string_view for_mbox;
+       mime_string for_mbox;
        struct rspamd_email_address *for_addr = nullptr;
        rspamd_inet_addr_t *addr = nullptr;
        struct rspamd_mime_header *hdr = nullptr;
@@ -128,7 +128,7 @@ struct received_header {
                        real_hostname = std::move(other.real_hostname);
                        real_ip = std::move(other.real_ip);
                        by_hostname = std::move(other.by_hostname);
-                       for_mbox = other.for_mbox;
+                       for_mbox = std::move(other.for_mbox);
                        timestamp = other.timestamp;
                        flags = other.flags;
                        std::swap(for_addr, other.for_addr);
@@ -159,7 +159,7 @@ struct received_header {
                        rh.from_ip = map.at("from_ip"sv);
                }
                if (map.contains("for_mbox")) {
-                       rh.for_mbox = map.at("for_mbox"sv);
+                       rh.for_mbox.assign_copy(map.at("for_mbox"sv));
                }
 
                return rh;
@@ -185,7 +185,7 @@ struct received_header {
                        map["from_ip"] = from_ip;
                }
                if (!for_mbox.empty()) {
-                       map["for_mbox"] = for_mbox;
+                       map["for_mbox"] = for_mbox.as_view();
                }
 
                return map;