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

defect 704
if checkpoint is opened without read permissions, checkpoint synchronize
should return SA_AIS_ERR_ACCESS.


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@742 fd59a12c-fef9-0310-b244-a6a79926bd2f

Steven Dake 20 лет назад
Родитель
Сommit
4ddb2fc143
1 измененных файлов с 6 добавлено и 0 удалено
  1. 6 0
      lib/ckpt.c

+ 6 - 0
lib/ckpt.c

@@ -1580,6 +1580,11 @@ saCkptCheckpointSynchronize (
 		return (error);
 	}
 
+	if ((ckptCheckpointInstance->checkpointOpenFlags & SA_CKPT_CHECKPOINT_WRITE) == 0) {
+		error = SA_AIS_ERR_ACCESS;
+		goto error_put;
+	}
+
 	req_lib_ckpt_checkpointsynchronize.header.size = sizeof (struct req_lib_ckpt_checkpointsynchronize); 
 	req_lib_ckpt_checkpointsynchronize.header.id = MESSAGE_REQ_CKPT_CHECKPOINT_CHECKPOINTSYNCHRONIZE;
 	memcpy (&req_lib_ckpt_checkpointsynchronize.checkpointName,
@@ -1602,6 +1607,7 @@ saCkptCheckpointSynchronize (
 error_exit:
 	pthread_mutex_unlock (&ckptCheckpointInstance->response_mutex);
 
+error_put:
 	saHandleInstancePut (&checkpointHandleDatabase, checkpointHandle);
 
 	return (error == SA_AIS_OK ? res_lib_ckpt_checkpointsynchronize.header.error : error);