X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=ipc%2Fcompat.c;h=ab76fb0ef8443e373c845b4a82510f09d64a1e79;hb=147efd0dd702ce2f1ab44449bd70369405ef68fd;hp=fa18141539fb38d4f6980c5b1f74b4c4dafa66e9;hpb=651971cb7242e8f6d7ebd153e69bd271cb731223;p=safe%2Fjmp%2Flinux-2.6 diff --git a/ipc/compat.c b/ipc/compat.c index fa18141..ab76fb0 100644 --- a/ipc/compat.c +++ b/ipc/compat.c @@ -225,7 +225,7 @@ static inline int put_compat_semid_ds(struct semid64_ds *s, int err; if (!access_ok (VERIFY_WRITE, up, sizeof(*up))) - err = -EFAULT; + return -EFAULT; err = __put_compat_ipc_perm(&s->sem_perm, &up->sem_perm); err |= __put_user(s->sem_otime, &up->sem_otime); err |= __put_user(s->sem_ctime, &up->sem_ctime); @@ -542,6 +542,8 @@ static inline int put_compat_shminfo64(struct shminfo64 *smi, if (!access_ok(VERIFY_WRITE, up64, sizeof(*up64))) return -EFAULT; + if (smi->shmmax > INT_MAX) + smi->shmmax = INT_MAX; err = __put_user(smi->shmmax, &up64->shmmax); err |= __put_user(smi->shmmin, &up64->shmmin); err |= __put_user(smi->shmmni, &up64->shmmni); @@ -557,6 +559,8 @@ static inline int put_compat_shminfo(struct shminfo64 *smi, if (!access_ok(VERIFY_WRITE, up, sizeof(*up))) return -EFAULT; + if (smi->shmmax > INT_MAX) + smi->shmmax = INT_MAX; err = __put_user(smi->shmmax, &up->shmmax); err |= __put_user(smi->shmmin, &up->shmmin); err |= __put_user(smi->shmmni, &up->shmmni);