From c744cea00a5775c57a78165a83b34a1fa3ac0715 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Sat, 27 Dec 2008 14:11:20 +0100
Subject: [PATCH] Fixed segfault bug in extension handling.

---
 src/lib-sieve/sieve-extensions.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/lib-sieve/sieve-extensions.c b/src/lib-sieve/sieve-extensions.c
index dd8a7f090..9b21026e2 100644
--- a/src/lib-sieve/sieve-extensions.c
+++ b/src/lib-sieve/sieve-extensions.c
@@ -282,7 +282,8 @@ void sieve_extensions_set_string(const char *ext_string)
 		eregs = array_get_modifiable(&extensions, &ext_count);
 		
 		for ( i = 0; i < ext_count; i++ ) {
-			*(eregs[i].extension->_id) = eregs[i].id;
+			if ( eregs[i].extension->_id == NULL )
+				*(eregs[i].extension->_id) = eregs[i].id;
 		}
 
 		return;	
@@ -336,10 +337,13 @@ void sieve_extensions_set_string(const char *ext_string)
 			}		
 		}
 
-		if ( disabled ) {
-			*(eregs[i].extension->_id) = -1;
-		} else {
-			*(eregs[i].extension->_id) = eregs[i].id;
+		if ( eregs[i].extension->_id != NULL && 
+			*(eregs[i].extension->name) != '@' ) {
+			if ( disabled ) {
+				*(eregs[i].extension->_id) = -1;
+			} else {
+				*(eregs[i].extension->_id) = eregs[i].id;
+			}
 		}
 	}
 }
-- 
GitLab