X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=contrib%2Ffsm_checker%2FCHROOT_CHECK%2Fchroot_jail.sm;fp=contrib%2Ffsm_checker%2FCHROOT_CHECK%2Fchroot_jail.sm;h=0579098e1779230e571b558506e4d408bc4c641d;hb=e09e518ebf18d490dbeb72c6358968af7d05d675;hp=0000000000000000000000000000000000000000;hpb=58f53b56557577b64911d0e7a2bba3fbb521d71d;p=lttv.git diff --git a/contrib/fsm_checker/CHROOT_CHECK/chroot_jail.sm b/contrib/fsm_checker/CHROOT_CHECK/chroot_jail.sm new file mode 100755 index 00000000..0579098e --- /dev/null +++ b/contrib/fsm_checker/CHROOT_CHECK/chroot_jail.sm @@ -0,0 +1,36 @@ +%start Map1::Start +%class rootjail +%header chroot_jail.h + +%map Map1 +%% +//STATE TRANSITION END STATE ACTION(S) + +Start +{ + chroot(pid: int, newroot:char*) Newroot {savepid(pid); savenewroot(newroot);} + Default + Start + {} + +} +Newroot +{ + chdir(pid: int, newdir: char *) + [thisprocess(ctxt, pid)==1 && checknewdir(newdir)==1] Destroy + {destroyfsm();} + chdir(pid: int, newdir: char *) + Newroot + {} + open(pid: int)[thisprocess(ctxt, pid)==1] + Destroy + {warning(); destroyfsm();} + Default + Newroot + {} +} +Destroy +{ + Default Destroy {} +} +%%