Fixed segfault bug caused by undisclosed-recipients:; when fed to the subaddress extension.
authorStephan Bosch <stephan@rename-it.nl>
Mon Apr 06 00:40:03 2009 +0200 (2009-04-06)
changeset 904ec78123ec073
parent 903 38ef3a309167
child 905 b7e376b7fb07
Fixed segfault bug caused by undisclosed-recipients:; when fed to the subaddress extension.
src/lib-sieve/plugins/subaddress/ext-subaddress.c
src/lib-sieve/sieve-address-parts.c
     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