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