Просмотр исходного кода

Fix cluster membership API not being authenticated bug.

(Logical change 1.15)


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@31 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 21 лет назад
Родитель
Сommit
7f24c23651
1 измененных файлов с 18 добавлено и 2 удалено
  1. 18 2
      exec/clm.c

+ 18 - 2
exec/clm.c

@@ -391,10 +391,26 @@ static int message_handler_req_exec_clm_nodejoin (int fd, void *message)
 
 static int message_handler_req_clm_init (int fd, void *message)
 {
+	SaErrorT error = SA_ERR_SECURITY;
+	struct res_lib_init res_lib_init;
+
 	log_printf (LOG_LEVEL_DEBUG, "Got request to initalize cluster membership service.\n");
-	connections[fd].service = SOCKET_SERVICE_CLM;
+	if (connections[fd].authenticated) {
+		connections[fd].service = SOCKET_SERVICE_CLM;
+		error = SA_OK;
+	}
 
-	return (0);
+	res_lib_init.header.magic = MESSAGE_MAGIC;
+	res_lib_init.header.size = sizeof (struct res_lib_init);
+	res_lib_init.header.id = MESSAGE_RES_INIT;
+	res_lib_init.error = error;
+
+	libais_send_response (fd, &res_lib_init, sizeof (res_lib_init));
+
+	if (connections[fd].authenticated) {
+		return (0);
+	}
+	return (-1);
 }
 
 int message_handler_req_clm_trackstart (int fd, void *message)