Fixed segfault bug caused by undisclosed-recipients:; when fed to the subaddress extension.
1.1 --- a/src/lib-sieve/plugins/subaddress/ext-subaddress.c Sat Mar 21 15:56:27 2009 +0100
1.2 +++ b/src/lib-sieve/plugins/subaddress/ext-subaddress.c Mon Apr 06 00:40:03 2009 +0200
1.3 @@ -117,7 +117,11 @@
1.4 static const char *subaddress_user_extract_from
1.5 (const struct sieve_address *address)
1.6 {
1.7 - const char *sep = strstr(address->local_part, sieve_subaddress_sep);
1.8 + const char *sep;
1.9 +
1.10 + if ( address->local_part == NULL ) return NULL;
1.11 +
1.12 + sep = strstr(address->local_part, sieve_subaddress_sep);
1.13
1.14 if ( sep == NULL ) return address->local_part;
1.15
1.16 @@ -127,9 +131,12 @@
1.17 static const char *subaddress_detail_extract_from
1.18 (const struct sieve_address *address)
1.19 {
1.20 - const char *sep = strstr(address->local_part, sieve_subaddress_sep);
1.21 + const char *sep;
1.22
1.23 - if ( sep == NULL ) return NULL;
1.24 + if ( address->local_part == NULL ) return NULL;
1.25 +
1.26 + if ( (sep=strstr(address->local_part, sieve_subaddress_sep)) == NULL )
1.27 + return NULL;
1.28
1.29 sep += strlen(sieve_subaddress_sep);
1.30
2.1 --- a/src/lib-sieve/sieve-address-parts.c Sat Mar 21 15:56:27 2009 +0100
2.2 +++ b/src/lib-sieve/sieve-address-parts.c Mon Apr 06 00:40:03 2009 +0200
2.3 @@ -340,7 +340,10 @@
2.4 static const char *addrp_all_extract_from
2.5 (const struct sieve_address *address)
2.6 {
2.7 - return t_strconcat(address->local_part, "@", address->domain, NULL);
2.8 + const char *local_part = address->local_part == NULL ? "" : address->local_part;
2.9 + const char *domain = address->domain == NULL ? "" : address->domain;
2.10 +
2.11 + return t_strconcat(local_part, "@", domain, NULL);
2.12 }
2.13
2.14 static const char *addrp_domain_extract_from