PERFORCE change 132956 for review

Zhouyi ZHOU zhouzhouyi at FreeBSD.org
Wed Jan 9 23:32:06 PST 2008


http://perforce.freebsd.org/chv.cgi?CH=132956

Change 132956 by zhouzhouyi at zhouzhouyi_mactest on 2008/01/10 07:31:43

	removing some bugs in sysvmsq checking

Affected files ...

.. //depot/projects/soc2007/zhouzhouyi_mactest_soc/regression/mactest/msgtest.c#4 edit
.. //depot/projects/soc2007/zhouzhouyi_mactest_soc/regression/mactest/tests/sysvmsg/00.t#3 edit

Differences ...

==== //depot/projects/soc2007/zhouzhouyi_mactest_soc/regression/mactest/msgtest.c#4 (text+ko) ====

@@ -67,6 +67,8 @@
 void	receiver (void);
 void	usage (void);
 
+
+#define ALRMTIME 2
 #define	MESSAGE_TEXT_LEN	255
 
 /*
@@ -95,7 +97,42 @@
 const char *macconf_file = NULL;
 const char *creator_label = NULL;	
 
+void
+stoprunning(sig)
+        int sig __unused;
+{
+	if (child_pid != 0) {
+		int error;
+		if (creator_label) {
+			mac_t		label;
 
+			if (mac_from_text(&label, "mls/equal,biba/equal") == -1) {
+				exit(-1);
+			}
+
+			if (mac_set_proc(label) == -1)
+				error = errno;
+			else
+				error = 0;
+			if (error){
+				printf("error relabelling proc!\n");
+				close(logfd);
+				exit(1);
+			}
+			mac_free(label);
+		}
+		kill(child_pid, SIGKILL);
+		if ((sender_msqid = msgget(msgkey, 0)) == -1)
+			fprintf(stderr, "cleanup: msgget");
+		if (msgctl(sender_msqid, IPC_RMID, NULL) == -1)
+			warn("msgctl IPC_RMID");
+		close(logfd);
+		machookmatch(macconf_file, getpid());
+	}
+       exit(0);
+}
+
+
 int
 main(int argc, char *argv[])
 {
@@ -146,17 +183,19 @@
 	sigemptyset(&sa.sa_mask);
 	sa.sa_flags = 0;
 	if (sigaction(SIGSYS, &sa, NULL) == -1)
-		err(1, "sigaction SIGSYS");
+		fprintf(stderr, "sigaction SIGSYS");
+
 
 
 	msgkey  = ftok(argv[0], 4160);
 	if ((sender_msqid = msgget(msgkey, IPC_CREAT | 0640)) == -1)
-		err(1, "msgget");
+		fprintf(stderr, "msgget");
 	if (msgctl(sender_msqid, IPC_STAT, &m_ds) == -1)
-		err(1, "msgctl IPC_STAT");
+		fprintf(stderr, "msgctl IPC_STAT");
 	if (msgctl(sender_msqid, IPC_RMID, NULL) == -1)
 		warn("msgctl IPC_RMID");
 	
+
 	/*
 	 * Initialize child_pid to ourselves to that the cleanup function
 	 * works before we create the receiver.
@@ -168,7 +207,7 @@
 	 * removed.
 	 */
 	if (atexit(cleanup) == -1)
-		err(1, "atexit");
+		fprintf(stderr, "atexit");
 
 	logfd = open("/dev/mactest", O_RDWR);
 	ioctl(logfd, BEGINLOG, NULL);
@@ -176,7 +215,7 @@
 	/*create the msg */
 	switch ((child_pid = fork())) {
 	case -1:
-		err(1, "fork");
+		fprintf(stderr, "fork");
 		/* NOTREACHED */
 
 	case 0:
@@ -198,20 +237,20 @@
 			mac_free(label);
 		}
 		if ((sender_msqid = msgget(msgkey, IPC_CREAT | 0640)) == -1)
-			err(1, "msgget");
+			fprintf(stderr, "msgget");
 		exit(0);
 	default:
 		break;
 	}
 
 	if (waitpid(child_pid, 0, 0) == -1)
-		err(1, "error create");
+		fprintf(stderr, "error create");
+  
 
-
 	/*check for ipcstat */
 	switch ((child_pid = fork())) {
 	case -1:
-		err(1, "fork");
+		fprintf(stderr, "fork");
 		/* NOTREACHED */
 
 	case 0:
@@ -233,9 +272,10 @@
 			mac_free(label);
 		}
 		if ((sender_msqid = msgget(msgkey, 0)) == -1)
-			err(1, "receiver: msgget");
+			fprintf(stderr, "receiver: msgget");
 		if (msgctl(sender_msqid, IPC_STAT, &m_ds) == -1)
-			err(1, "msgctl IPC_STAT");
+			fprintf(stderr, "msgctl IPC_STAT");
+		close(logfd);
 		exit(0);
 	default:
 		break;
@@ -243,13 +283,13 @@
 
 
 	if (waitpid(child_pid, 0, 0) == -1)
-		err(1, "error stat");
+		fprintf(stderr, "error stat");
 
 
 	/*check for ipc_set */
 	switch ((child_pid = fork())) {
 	case -1:
-		err(1, "fork");
+		fprintf(stderr, "fork");
 		/* NOTREACHED */
 
 	case 0:
@@ -272,9 +312,10 @@
 		}
 //		memset(&m_ds, 0, sizeof m_ds);
 		if ((sender_msqid = msgget(msgkey, 0)) == -1)
-			err(1, "ipcset: msgget");
+			fprintf(stderr, "ipcset: msgget");
 		if (msgctl(sender_msqid, IPC_SET, &m_ds) == -1)
-			err(1, "msgctl IPC_SET");
+			fprintf(stderr, "msgctl IPC_SET");
+		close(logfd);
 		exit(0);
 	default:
 		break;
@@ -282,7 +323,7 @@
 
 
 	if (waitpid(child_pid, 0, 0) == -1)
-		err(1, "error set");
+		fprintf(stderr, "error set");
 
 
 
@@ -296,12 +337,12 @@
 	sigemptyset(&sa.sa_mask);
 	sa.sa_flags = 0;
 	if (sigaction(SIGCHLD, &sa, NULL) == -1)
-		err(1, "sigaction SIGCHLD");
+		fprintf(stderr, "sigaction SIGCHLD");
 
 
 	switch ((child_pid = fork())) {
 	case -1:
-		err(1, "fork");
+		fprintf(stderr, "fork");
 		/* NOTREACHED */
 
 	case 0:
@@ -350,16 +391,28 @@
 	}
 	m.mtype = MTYPE_1;
 	strcpy(m.mtext, m1_str);
+
+	alarm(ALRMTIME);
+	sa.sa_handler = stoprunning;
+	sigemptyset(&sa.sa_mask);
+	sa.sa_flags = 0;
+	if (sigaction(SIGALRM, &sa, NULL) == -1)
+		fprintf(stderr, "sigaction SIGALRM\n");
+
+
 	if ((sender_msqid = msgget(msgkey, 0)) == -1)
-		err(1, "ipcset: msgget");
+		fprintf(stderr, "ipcset: msgget\n");
+
 	if (msgsnd(sender_msqid, &m, strlen(m1_str) + 1, 0) == -1)
-		err(1, "sender: msgsnd 1");
+		fprintf(stderr, "sender: msgsnd\n");
 
 
 
 	/*
 	 * Suspend forever; when we get SIGCHLD, the handler will exit.
 	 */
+
+
 	sigemptyset(&sigmask);
 	(void) sigsuspend(&sigmask);
 
@@ -381,7 +434,7 @@
 {
 	struct msqid_ds m_ds;
 	int cstatus;
-
+	close(logfd);
 	exit(0);
 }
 
@@ -390,13 +443,14 @@
 {
 	int error;
 
-	if (child_pid != 0 /*&& sender_msqid != -1*/) {
+	if (child_pid != 0) {
 		if (creator_label) {
 			mac_t		label;
-			
-			if (mac_from_text(&label, creator_label) == -1) {
+
+			if (mac_from_text(&label, "mls/equal,biba/equal") == -1) {
 				exit(-1);
 			}
+
 			if (mac_set_proc(label) == -1)
 				error = errno;
 			else
@@ -409,7 +463,7 @@
 			mac_free(label);
 		}
 		if ((sender_msqid = msgget(msgkey, 0)) == -1)
-			err(1, "cleanup: msgget");
+			fprintf(stderr, "cleanup: msgget");
 		if (msgctl(sender_msqid, IPC_RMID, NULL) == -1)
 			warn("msgctl IPC_RMID");
 		close(logfd);
@@ -433,7 +487,7 @@
 	int msqid;
 
 	if ((msqid = msgget(msgkey, 0)) == -1)
-		err(1, "receiver: msgget");
+		fprintf(stderr, "receiver: msgget\n");
 
 	/*
 	 * Receive the first message, print it, and send an ACK.
@@ -441,14 +495,6 @@
 
 	if (msgrcv(msqid, &m, sizeof(m.mtext), MTYPE_1, 0) !=
 	    strlen(m1_str) + 1);
-/*		err(1, "receiver: msgrcv 1");*/ /*comment out the receiver error
- report for parsing the sender error*/
-
-/*	if (strcmp(m.mtext, m1_str) != 0){
-		err(1, "receiver: message 1 data isn't correct");
-	}
-*/
-/*comment out the receiver error report for parsing the sender error */
 	
 	exit(0);
 }

==== //depot/projects/soc2007/zhouzhouyi_mactest_soc/regression/mactest/tests/sysvmsg/00.t#3 (text+ko) ====



More information about the p4-projects mailing list