X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fsrc%2Frpm-fake.c;h=f81718bd2da8eaf976d631893c5858682a44ff6e;hb=319929791248f823537ac5fb2fe10a01b5b820b9;hp=6386d4296383578193e41bd39709ad156c4680ad;hpb=a9525bbb61e51961006e888b4413649c46f04c9a;p=util-vserver.git diff --git a/util-vserver/src/rpm-fake.c b/util-vserver/src/rpm-fake.c index 6386d42..f81718b 100644 --- a/util-vserver/src/rpm-fake.c +++ b/util-vserver/src/rpm-fake.c @@ -180,7 +180,7 @@ setupContext(xid_t xid, char const **xid_str) xid_t rc=VC_NOCTX; if ((xid==VC_DYNAMIC_XID || !vc_is_dynamic_xid(xid)) && - (rc=vc_create_context(xid))==VC_NOCTX && + (rc=vc_ctx_create(xid))==VC_NOCTX && errno!=EEXIST) { perror(ENSC_WRAPPERS_PREFIX "vc_create_context()"); exit(255); @@ -195,9 +195,9 @@ setupContext(xid_t xid, char const **xid_str) l = utilvserver_fmt_uint(buf+sizeof("rpm-fake.so #")-1, getppid()); Evc_set_vhi_name(rc, vcVHI_CONTEXT, buf, sizeof("rpm-fake.so #")+l-1); - caps.ccaps = ~0ull; + caps.ccaps = 0ull; caps.cmask = ~0ull; - caps.bcaps = ~vc_get_insecurecaps(); + caps.bcaps = ~vc_get_insecurebcaps(); caps.bmask = ~0ull; Evc_set_ccaps(rc, &caps); @@ -278,10 +278,12 @@ initPwSocket() } if (pid==0) { - char const *args[15]; + char const *args[20]; char const **ptr = args; char const *env[] = { "HOME=/", "PATH=/bin:/usr/bin", 0 }; char const *xid_str; + char flag_str[ sizeof(flags)*3 + 2]; + char caps_str[ sizeof(caps)*3 + 2]; setsid(); dup2(res_sock[1], 0); @@ -294,7 +296,12 @@ initPwSocket() close(res_sock[1]); /* ... *socket[0] are marked as close-on-exec ...*/ + flag_str[utilvserver_fmt_uint(flag_str, flags)] = '\0'; + caps_str[utilvserver_fmt_uint(caps_str, caps)] = '\0'; + *ptr++ = resolver; + *ptr++ = "-F"; *ptr++ = flag_str; + *ptr++ = "-C"; *ptr++ = caps_str; if (root) { *ptr++ = "-r"; *ptr++ = root; } if (uid) { *ptr++ = "-u"; *ptr++ = uid; } if (gid) { *ptr++ = "-g"; *ptr++ = gid; } @@ -530,7 +537,7 @@ execvWorker(char const *path, char * const argv[]) int res = -1; if (vc_isSupported(vcFEATURE_MIGRATE)) - res = vc_migrate_context(ctx); + res = vc_ctx_migrate(ctx); else #ifdef VC_ENABLE_API_COMPAT res = vc_new_s_context(ctx,caps,flags);