Przeglądaj źródła

Handle segfault in backlog_get

If instance->memb_state is not OPERATION or RECOVERY, we was passing NULL
to cs_queue_used call.

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
(cherry picked from commit 2d4e7bebb526cdc4f8aec539ebe65ab02ede9acd)
Jan Friesse 13 lat temu
rodzic
commit
9d18b2a462
1 zmienionych plików z 4 dodań i 1 usunięć
  1. 4 1
      exec/totemsrp.c

+ 4 - 1
exec/totemsrp.c

@@ -3414,7 +3414,10 @@ static unsigned int backlog_get (struct totemsrp_instance *instance)
 	if (instance->memb_state == MEMB_STATE_RECOVERY) {
 	if (instance->memb_state == MEMB_STATE_RECOVERY) {
 		queue_use = &instance->retrans_message_queue;
 		queue_use = &instance->retrans_message_queue;
 	}
 	}
-	backlog = cs_queue_used (queue_use);
+
+	if (queue_use != NULL) {
+		backlog = cs_queue_used (queue_use);
+	}
 
 
 	instance->stats.token[instance->stats.latest_token].backlog_calc = backlog;
 	instance->stats.token[instance->stats.latest_token].backlog_calc = backlog;
 	return (backlog);
 	return (backlog);