Date: Tue, 10 Jul 2007 07:28:26 GMT From: Zhouyi ZHOU <zhouzhouyi@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 123249 for review Message-ID: <200707100728.l6A7SQ4X097218@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=123249 Change 123249 by zhouzhouyi@zhouzhouyi_mactest on 2007/07/10 07:27:49 Unify the shell function "system" handling in mactest.c to test MAC commands. Don't know if it is an error that command "ls" need a -l to work with -Z which has not been mentioned in ls's manual page. Affected files ... .. //depot/projects/soc2007/zhouzhouyi_mactest_soc/regression/mactest/mactest.c#8 edit .. //depot/projects/soc2007/zhouzhouyi_mactest_soc/regression/mactest/tests/open/01.t#2 edit Differences ... ==== //depot/projects/soc2007/zhouzhouyi_mactest_soc/regression/mactest/mactest.c#8 (text+ko) ==== @@ -62,8 +62,7 @@ enum action { ACTION_KILL, - ACTION_SETFMAC, - ACTION_GETFMAC, + ACTION_SYSTEM, ACTION_OPEN, ACTION_CREATE, ACTION_UNLINK, @@ -106,8 +105,7 @@ static struct syscall_desc syscalls[] = { { "kill", ACTION_KILL, { TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } }, - { "setfmac", ACTION_SETFMAC, { TYPE_STRING, TYPE_STRING, TYPE_NONE }}, - { "getfmac", ACTION_GETFMAC, { TYPE_STRING, TYPE_NONE }}, + { "system", ACTION_SYSTEM, { TYPE_NONE }}, { "open", ACTION_OPEN, { TYPE_STRING, TYPE_STRING, TYPE_NUMBER | TYPE_OPTIONAL, TYPE_NONE } }, { "create", ACTION_CREATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, { "unlink", ACTION_UNLINK, { TYPE_STRING, TYPE_NONE } }, @@ -365,6 +363,7 @@ } printf("\n"); } +char * systemargs = 0; static unsigned int call_syscall(struct syscall_desc *scall, char *argv[]) @@ -382,7 +381,20 @@ /* * Verify correctness of the arguments. */ - for (i = 0; i < sizeof(args)/sizeof(args[0]); i++) { + systemargs = malloc(1024); + bzero(systemargs, 1024); + if (scall->sd_action == ACTION_SYSTEM){ + i = 0; + int n = 0; + while (argv[i]) + { + n += sprintf(systemargs+n, "%s ", argv[i]); + i++; + } + + } else { + for (i = 0; i < sizeof(args)/sizeof(args[0]); i++) { + if (scall->sd_args[i] == TYPE_NONE) { if (argv[i] == NULL || strcmp(argv[i], ":") == 0) break; @@ -410,7 +422,9 @@ } } } + } } + /* * Call the given syscall. */ @@ -420,21 +434,10 @@ case ACTION_KILL: rval = kill(NUM(0),NUM(1)); break; - case ACTION_SETFMAC: - { - char shcmd[1024]; - sprintf(shcmd, "setfmac %s %s", STR(0), STR(1)); - rval = system(shcmd); - break; - } - case ACTION_GETFMAC: - { - char shcmd[1024]; - int i = 0; - i = sprintf(shcmd, "getfmac %s", STR(0)); - rval = system(shcmd); - return (i); - } + case ACTION_SYSTEM: + rval = system(systemargs); + free(systemargs); + break; case ACTION_OPEN: flags = str2flags(open_flags, STR(1)); if (flags & O_CREAT) { ==== //depot/projects/soc2007/zhouzhouyi_mactest_soc/regression/mactest/tests/open/01.t#2 (text+ko) ==== @@ -90,14 +90,22 @@ #destroy old label echo "pid = -2 mac_test_destroy_vnode_label" >> ${mactest_conf} - mactestexpect 0 -m "mls/5(low-high)" -f ${mactest_conf} setfmac "mls/7" ${n0} + mactestexpect 0 -m "mls/5(low-high)" -f ${mactest_conf} system setfmac "mls/7" ${n0} ############################################################# -#caes getfmac command: +#case getfmac command: #It is strange that there are no mac_check respect to get the vnode label echo -n "pid = -2 mac_test_copy_vnode_label with src label:" > ${mactest_conf} echo "biba/high,mls/7" >> ${mactest_conf} - mactestexpect1 "biba/high,mls/7" -f ${mactest_conf} getfmac ${n0} + mactestexpect1 "biba/high,mls/7" -f ${mactest_conf} system getfmac ${n0} + +############################################################# +#case ls -l -Z command: +#Why ls need -l to work with -Z, this is not correspond to the manual page of ls + echo -n "pid = -2 mac_test_copy_vnode_label with src label:" > ${mactest_conf} + echo "biba/high,mls/7" >> ${mactest_conf} + mactestexpect1 "biba/high,mls/7" -f ${mactest_conf} system ls -l -Z ${n0} + #cleanup: cd .. rm -fr ${n1}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707100728.l6A7SQ4X097218>