--- procps-3.1.15/ps/ps.1.selinux 2003-12-23 20:59:47.000000000 -0500 +++ procps-3.1.15/ps/ps.1 2004-01-21 13:12:33.000000000 -0500 @@ -96,6 +96,7 @@ s display signal format u display user-oriented format v display virtual memory format +-Z display security context format (NSA SELinux, etc.) --format user-defined format --context display security context format (NSA SELinux, etc.) --- procps-3.2.1/ps/parser.c.orig 2004-03-27 04:52:01.000000000 +0100 +++ procps-3.2.1/ps/parser.c 2004-03-28 22:01:05.542682592 +0200 @@ -224,7 +224,7 @@ flagptr = ps_argv[thisarg]; while(*++flagptr){ /* Find any excuse to ignore stupid Unix98 misfeatures. */ - if(!strchr("aAdefgGlnoptuU", *flagptr)) not_pure_unix = 1; + if(!strchr("aAdefgGlnoptuUzZ", *flagptr)) not_pure_unix = 1; switch(*flagptr){ case 'A': trace("-A selects all processes.\n"); @@ -314,12 +314,10 @@ exclusive("-V"); display_version(); exit(0); -#if 0 case 'Z': /* full Mandatory Access Control level info */ trace("-Z shows full MAC info\n"); - return "Don't understand MAC on Linux."; + format_flags |= FF_Fc; break; -#endif case 'a': trace("-a select all with a tty, but omit session leaders.\n"); simple_select |= SS_U_a; @@ -442,12 +440,10 @@ trace("-y Print lnone info in UID/USER column or do Sun -l hack.\n"); format_modifiers |= FM_y; break; -#if 0 case 'z': /* alias of Mandatory Access Control level info */ - trace("-z shows aliased MAC info\n"); - return "Don't understand MAC on Linux."; + trace("-Z shows full MAC info\n"); + format_flags |= FF_Fc; break; -#endif case '-': return "Embedded '-' among SysV options makes no sense."; break; @@ -567,10 +563,17 @@ trace("X Old Linux i386 register format\n"); format_flags |= FF_LX; break; +#ifdef __linux__ + case 'Z': + trace("SElinux Security Context format\n"); + format_flags |= FF_Fc; + break; +#else case 'Z': /* FreeBSD does MAC like SGI's Irix does it */ trace("Z Print security label for Mandatory Access Control.\n"); format_modifiers |= FM_M; break; +#endif case 'a': trace("a Select all w/tty, including other users\n"); simple_select |= SS_B_a;