about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/ngircd/lists.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/ngircd/lists.c b/src/ngircd/lists.c
index 11f8e888..27a51dca 100644
--- a/src/ngircd/lists.c
+++ b/src/ngircd/lists.c
@@ -126,8 +126,19 @@ Lists_Add(struct list_head *h, const char *Mask, time_t ValidUntil,
 	assert(h != NULL);
 	assert(Mask != NULL);
 
-	if (Lists_CheckDupeMask(h, Mask))
+	e = Lists_CheckDupeMask(h, Mask);
+	if (e) {
+		e->valid_until = ValidUntil;
+		if (e->reason)
+			free(e->reason);
+		e->reason = malloc(strlen(Reason) + 1);
+		if (e->reason)
+			strlcpy(e->reason, Reason, strlen(Reason) + 1);
+		else
+			Log(LOG_EMERG,
+			    "Can't allocate memory for new list reason text!");
 		return true;
+	}
 
 	e = Lists_GetFirst(h);