diff --git a/ssl/ssl_ciph.c b/ssl/ssl_ciph.c
index f550386..a5c417a 100644
--- a/ssl/ssl_ciph.c
+++ b/ssl/ssl_ciph.c
@@ -934,7 +934,7 @@ static void ssl_cipher_apply_rule(unsigned long cipher_id,
 		int rule, int strength_bits,
 		CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p)
 	{
-	CIPHER_ORDER *head, *tail, *curr, *next, *last;
+	CIPHER_ORDER *head, *tail, *curr, *curr2, *last;
 	const SSL_CIPHER *cp;
 	int reverse = 0;
 
@@ -951,25 +951,21 @@ static void ssl_cipher_apply_rule(unsigned long cipher_id,
 
 	if (reverse)
 		{
-		next = tail;
+		curr = tail;
 		last = head;
 		}
 	else
 		{
-		next = head;
+		curr = head;
 		last = tail;
 		}
 
-	curr = NULL;
+	curr2 = curr;
 	for (;;)
 		{
-		if (curr == last) break;
-
-		curr = next;
-
-		if (curr == NULL) break;
-
-		next = reverse ? curr->prev : curr->next;
+		if ((curr == NULL) || (curr == last)) break;
+		curr = curr2;
+		curr2 = reverse ? curr->prev : curr->next;
 
 		cp = curr->cipher;
 
