From 284a1233400e9163a9af9161f64deec2cf19fcea Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Tue, 12 Apr 2005 21:54:48 +0000 Subject: [PATCH] implemented VERIFYPROC method git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2026 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- util-vserver/src/vserver-info.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/util-vserver/src/vserver-info.c b/util-vserver/src/vserver-info.c index de79e6f..cbc8ba9 100644 --- a/util-vserver/src/vserver-info.c +++ b/util-vserver/src/vserver-info.c @@ -52,7 +52,7 @@ typedef enum { tgNONE,tgCONTEXT, tgID, tgRUNNING, tgINITPID, tgINITPID_PID, tgXID, tgUTS, tgSYSINFO, tgFEATURE, tgCANONIFY, - tgVERIFYCAP, tgXIDTYPE, + tgVERIFYCAP, tgXIDTYPE, tgVERIFYPROC, } VserverTag; static struct { @@ -80,6 +80,7 @@ static struct { { "PXID", tgPXID, "returns the xid of the parent context" }, { "CANONIFY", tgCANONIFY, "canonifies the vserver-name and removes dangerous characters" }, { "VERIFYCAP", tgVERIFYCAP, "test if the kernel supports linux capabilities" }, + { "VERIFYPROC", tgVERIFYPROC, "test if /proc can be read by contexts!=0" }, { "XIDTYPE", tgXIDTYPE, "returns the type of the given XID" }, }; @@ -159,6 +160,26 @@ utsText2Tag(char const *str) } static bool +verifyProc() +{ + char const *errptr; + + if (!switchToWatchXid(&errptr)) { + perror(errptr); + return false; + } + + if (access("/proc/uptime", R_OK)==-1) { + if (errno!=ENOENT) + perror("access(\"/proc/uptime\")"); + + return false; + } + + return true; +} + +static bool verifyCap() { struct __user_cap_header_struct header; @@ -485,6 +506,7 @@ execQuery(char const *vserver, VserverTag tag, int argc, char *argv[]) case tgSYSINFO : return printSysInfo(buf); break; case tgFEATURE : return testFeature(argc,argv); break; case tgVERIFYCAP : return verifyCap() ? 0 : 1; break; + case tgVERIFYPROC : return verifyProc() ? 0 : 1; break; default : { -- 1.8.1.5