fix /proc/pid/mem, /proc/pid/status, /proc/pid/cmdline

This commit is contained in:
Tomoki Shirasawa
2015-07-02 00:22:35 +09:00
parent fa79db3bcc
commit 59ee251e1c
8 changed files with 207 additions and 190 deletions

View File

@@ -159,12 +159,6 @@ struct program_load_desc *load_elf(FILE *fp, char **interp_pathp)
int load_addr_set = 0;
static char interp_path[PATH_MAX];
ssize_t ss;
uid_t ruid;
uid_t euid;
uid_t suid;
gid_t rgid;
gid_t egid;
gid_t sgid;
*interp_pathp = NULL;
@@ -248,18 +242,8 @@ struct program_load_desc *load_elf(FILE *fp, char **interp_pathp)
}
desc->pid = getpid();
desc->pgid = getpgid(0);
getresuid(&ruid, &euid, &suid);
getresgid(&rgid, &egid, &sgid);
desc->ruid = ruid;
desc->euid = euid;
desc->suid = suid;
// desc->fsuid = setfsuid(-1);
desc->rgid = rgid;
desc->egid = egid;
desc->sgid = sgid;
// desc->fsgid = setfsgid(-1);
desc->entry = hdr.e_entry;
ioctl(fd, MCEXEC_UP_GET_CREDV, desc->cred);
desc->at_phdr = load_addr + hdr.e_phoff;
desc->at_phent = sizeof(phdr);
desc->at_phnum = hdr.e_phnum;
@@ -2046,6 +2030,17 @@ return_execve2:
do_syscall_return(fd, cpu, 0, 0, 0, 0, 0);
break;
case __NR_setfsuid:
if(w.sr.args[1] == 1){
ioctl(fd, MCEXEC_UP_GET_CRED, w.sr.args[0]);
ret = 0;
}
else{
ret = setfsuid(w.sr.args[0]);
}
do_syscall_return(fd, cpu, ret, 0, 0, 0, 0);
break;
case __NR_close:
if(w.sr.args[0] == fd)
ret = -EBADF;
@@ -2055,8 +2050,8 @@ return_execve2:
break;
default:
ret = do_generic_syscall(&w);
do_syscall_return(fd, cpu, ret, 0, 0, 0, 0);
ret = do_generic_syscall(&w);
do_syscall_return(fd, cpu, ret, 0, 0, 0, 0);
break;
}