diff -u --recursive --new-file v1.2.12/linux/Makefile linux/Makefile --- v1.2.12/linux/Makefile Tue Jul 25 12:39:54 1995 +++ linux/Makefile Wed Jul 26 09:43:44 1995 @@ -1,6 +1,6 @@ VERSION = 1 PATCHLEVEL = 2 -SUBLEVEL = 12 +SUBLEVEL = 13 ARCH = i386 diff -u --recursive --new-file v1.2.12/linux/drivers/net/ppp.c linux/drivers/net/ppp.c --- v1.2.12/linux/drivers/net/ppp.c Tue Jul 25 12:39:54 1995 +++ linux/drivers/net/ppp.c Thu Jul 27 09:08:11 1995 @@ -1262,6 +1262,12 @@ } else goto wait; } + i = verify_area (VERIFY_WRITE,buf,nr); + if (i != 0) { + ppp->us_rbuff_lock = 0; + return i; + } + /* reset the time of the last read operation */ ppp->ddinfo.nip_rjiffies = jiffies; @@ -1303,6 +1309,12 @@ current->timeout = 0; PRINTKN (3,(KERN_DEBUG "ppp_read: sleeping\n")); interruptible_sleep_on (&ppp->read_wait); + + /* Ensure that the ppp device is still attached. */ + ppp = ppp_find(tty); + if (!ppp || ppp->magic != PPP_MAGIC || !ppp->inuse) + return 0; + if (current->signal & ~current->blocked) return -EINTR; } while (1); @@ -1354,6 +1366,10 @@ nr = ppp->mtu; } + i = verify_area (VERIFY_READ,buf,nr); + if (i != 0) + return i; + if (ppp_debug >= 3) ppp_print_buffer ("write frame", buf, nr, USER_DS); @@ -1363,6 +1379,12 @@ current->timeout = 0; PRINTKN (3,(KERN_DEBUG "ppp_write: sleeping\n")); interruptible_sleep_on(&ppp->write_wait); + + /* Ensure that the ppp device is still attached. */ + ppp = ppp_find(tty); + if (!ppp || ppp->magic != PPP_MAGIC || !ppp->inuse) + return 0; + if (current->signal & ~current->blocked) return -EINTR; } diff -u --recursive --new-file v1.2.12/linux/fs/block_dev.c linux/fs/block_dev.c --- v1.2.12/linux/fs/block_dev.c Mon Jan 23 23:04:09 1995 +++ linux/fs/block_dev.c Tue Aug 1 10:05:32 1995 @@ -197,6 +197,9 @@ if (offset > size) left = 0; + /* size - offset might not fit into left, so check explicitly. */ + else if (size - offset > INT_MAX) + left = INT_MAX; else left = size - offset; if (left > count) diff -u --recursive --new-file v1.2.12/linux/fs/hpfs/hpfs_fs.c linux/fs/hpfs/hpfs_fs.c --- v1.2.12/linux/fs/hpfs/hpfs_fs.c Sun Feb 5 14:44:32 1995 +++ linux/fs/hpfs/hpfs_fs.c Wed Jul 26 09:43:32 1995 @@ -1297,7 +1297,7 @@ /* * name not found. */ - + brelse4(qbh); return 0; } diff -u --recursive --new-file v1.2.12/linux/fs/nfs/dir.c linux/fs/nfs/dir.c --- v1.2.12/linux/fs/nfs/dir.c Mon Jan 23 10:38:29 1995 +++ linux/fs/nfs/dir.c Wed Aug 2 09:52:08 1995 @@ -248,7 +248,7 @@ entry->fhandle = *fhandle; entry->fattr = *fattr; entry->expiration_date = jiffies + (S_ISDIR(fattr->mode) - ? NFS_SERVER(dir)->acdirmax : NFS_SERVER(dir)->acregmax); + ? NFS_SERVER(dir)->acdirmin : NFS_SERVER(dir)->acregmin); } static void nfs_lookup_cache_remove(struct inode *dir, struct inode *inode, diff -u --recursive --new-file v1.2.12/linux/fs/proc/inode.c linux/fs/proc/inode.c --- v1.2.12/linux/fs/proc/inode.c Tue Jul 25 12:39:54 1995 +++ linux/fs/proc/inode.c Tue Aug 1 13:06:57 1995 @@ -194,10 +194,9 @@ return; } ino &= 0x0000ffff; - if (ino == PROC_PID_INO || - (p->dumpable && p->uid == p->euid && p->gid == p->egid)) { - inode->i_uid = p->uid; - inode->i_gid = p->gid; + if (ino == PROC_PID_INO || p->dumpable) { + inode->i_uid = p->euid; + inode->i_gid = p->egid; } switch (ino) { case PROC_PID_INO: