p4-projects@freebsd.org
[Top] [All Lists]

PERFORCE change 132956 for review

Subject: PERFORCE change 132956 for review
From: Zhouyi ZHOU
Date: Thu, 10 Jan 2008 07:32:05 GMT
http://perforce.freebsd.org/chv.cgi?CH=132956

Change 132956 by zhouzhouyi@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) ====

_______________________________________________
p4-projects@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/p4-projects
To unsubscribe, send any mail to "p4-projects-unsubscribe@xxxxxxxxxxx"

<Prev in Thread] Current Thread [Next in Thread>
  • PERFORCE change 132956 for review, Zhouyi ZHOU <=