STATUS: 81% done

0000 T _gtime		compatible
    000e T _ftime		compatible
    00a4 T _stime		compatible
    00d2 T _setuid		compatible
    012e T _getuid		compatible
    0148 T _setgid		compatible
    019a T _getgid		compatible
    01b4 T _getpid		compatible
    01d0 T _setpgrp		compatible
    0206 T _sync		compatible
    020e T _nice		compatible
    027c T _unlink		compatible
    038e T _chdir		compatible
    0398 T _chroot		compatible
    03ac T _chdirec		compatible
    042a T _chmod		compatible
    04a0 T _chown		compatible
    04fa T _ssig		not compatible
    0612 T _kill		not compatible
    0722 T _times		not compatible
    077a T _profil		compatible
    07ac T _sprofil		not existent
    0872 T _alarm		compatible
    08aa T _pause		compatible
    08bc T _umask		compatible
    08e0 T _utime		compatible
    09ee T _nosys		compatible
    09f8 T _nullsys		compatible
    09fa T _bpt			not existent
    0a0a T _utssys		not compatible
    0b0a T _ulimit		compatible
This commit is contained in:
Oliver Lehmann 2008-05-21 05:11:15 +00:00
parent ac5f92dd15
commit aae7e621be
1 changed files with 13 additions and 6 deletions

View File

@ -488,7 +488,8 @@ utime()
time_t tv[2];
uap = (struct a *)u.u_ap;
if (uap->tptr != NULL) {
if ((!u.u_segmented && uap->tptr != (time_t *)0x3f000000) ||
(u.u_segmented && uap->tptr != NULL)) {
if (copyin((caddr_t)uap->tptr, (caddr_t)tv, sizeof(tv))) {
u.u_error = EFAULT;
return;
@ -501,11 +502,13 @@ utime()
if (ip == NULL)
return;
if (u.u_uid != ip->i_uid && u.u_uid != 0) {
if (uap->tptr != NULL)
if ((!u.u_segmented && uap->tptr != (time_t *)0x3f000000) ||
(u.u_segmented && uap->tptr != NULL)) {
u.u_error = EPERM;
else
} else {
access(ip, IWRITE);
}
}
if (!u.u_error) {
ip->i_flag |= IACC|IUPD|ICHG;
iupdat(ip, &tv[0], &tv[1]);
@ -536,10 +539,16 @@ utssys()
int mv;
int type;
} *uap;
register struct mount *mp;
register struct filsys *fp;
extern int Nmount;
/* variable declarations missing probably used for case 2 */
uap = (struct a *)u.u_ap;
switch(uap->type) {
/* case 0 should work - case 2 is not compatible */
case 0: /* uname */
if (copyout(&utsname, uap->cbuf, sizeof(struct utsname)))
u.u_error = EFAULT;
@ -548,12 +557,10 @@ case 0: /* uname */
/* case 1 was umask */
case 2: /* ustat */
for(i=0; i<NMOUNT; i++) {
register struct mount *mp;
for(i=0; i<Nmount; i++) {
mp = &mount[i];
if(mp->m_flags == MINUSE && mp->m_dev==uap->mv) {
register struct filsys *fp;
fp = mp->m_bufp->b_un.b_filsys;
if(copyout(&fp->s_tfree, uap->cbuf, 18))