From b1448450bf74c3e38b07c3bbb1785a52792c6a8d Mon Sep 17 00:00:00 2001 From: Keith Bostic Date: Thu, 16 Feb 1989 22:23:38 -0800 Subject: [PATCH 1/1] don't allow more than LINK_MAX links SCCS-vsn: sys/kern/vfs_syscalls.c 7.5 SCCS-vsn: sys/ufs/ffs/ffs_vnops.c 7.5 SCCS-vsn: sys/ufs/ffs/ufs_vnops.c 7.5 SCCS-vsn: sys/ufs/lfs/lfs_vnops.c 7.5 SCCS-vsn: sys/ufs/ufs/ufs_vnops.c 7.5 --- usr/src/sys/kern/vfs_syscalls.c | 7 ++++++- usr/src/sys/ufs/ffs/ffs_vnops.c | 7 ++++++- usr/src/sys/ufs/ffs/ufs_vnops.c | 7 ++++++- usr/src/sys/ufs/lfs/lfs_vnops.c | 7 ++++++- usr/src/sys/ufs/ufs/ufs_vnops.c | 7 ++++++- 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/usr/src/sys/kern/vfs_syscalls.c b/usr/src/sys/kern/vfs_syscalls.c index 7485eee2c9..1e507dedc1 100644 --- a/usr/src/sys/kern/vfs_syscalls.c +++ b/usr/src/sys/kern/vfs_syscalls.c @@ -3,7 +3,7 @@ * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * - * @(#)vfs_syscalls.c 7.4 (Berkeley) %G% + * @(#)vfs_syscalls.c 7.5 (Berkeley) %G% */ #include "param.h" @@ -264,6 +264,11 @@ link() iput(ip); return; } + if (ip->i_nlink == LINK_MAX - 1) { + u.u_error = EMLINK; + iput(ip); + return; + } ip->i_nlink++; ip->i_flag |= ICHG; iupdat(ip, &time, &time, 1); diff --git a/usr/src/sys/ufs/ffs/ffs_vnops.c b/usr/src/sys/ufs/ffs/ffs_vnops.c index 7566bc5a24..0b53693bf7 100644 --- a/usr/src/sys/ufs/ffs/ffs_vnops.c +++ b/usr/src/sys/ufs/ffs/ffs_vnops.c @@ -3,7 +3,7 @@ * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * - * @(#)ffs_vnops.c 7.4 (Berkeley) %G% + * @(#)ffs_vnops.c 7.5 (Berkeley) %G% */ #include "param.h" @@ -264,6 +264,11 @@ link() iput(ip); return; } + if (ip->i_nlink == LINK_MAX - 1) { + u.u_error = EMLINK; + iput(ip); + return; + } ip->i_nlink++; ip->i_flag |= ICHG; iupdat(ip, &time, &time, 1); diff --git a/usr/src/sys/ufs/ffs/ufs_vnops.c b/usr/src/sys/ufs/ffs/ufs_vnops.c index 016a175485..337aa7ffe1 100644 --- a/usr/src/sys/ufs/ffs/ufs_vnops.c +++ b/usr/src/sys/ufs/ffs/ufs_vnops.c @@ -3,7 +3,7 @@ * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * - * @(#)ufs_vnops.c 7.4 (Berkeley) %G% + * @(#)ufs_vnops.c 7.5 (Berkeley) %G% */ #include "param.h" @@ -264,6 +264,11 @@ link() iput(ip); return; } + if (ip->i_nlink == LINK_MAX - 1) { + u.u_error = EMLINK; + iput(ip); + return; + } ip->i_nlink++; ip->i_flag |= ICHG; iupdat(ip, &time, &time, 1); diff --git a/usr/src/sys/ufs/lfs/lfs_vnops.c b/usr/src/sys/ufs/lfs/lfs_vnops.c index bc4354f3ee..5cdd1e7e39 100644 --- a/usr/src/sys/ufs/lfs/lfs_vnops.c +++ b/usr/src/sys/ufs/lfs/lfs_vnops.c @@ -3,7 +3,7 @@ * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * - * @(#)lfs_vnops.c 7.4 (Berkeley) %G% + * @(#)lfs_vnops.c 7.5 (Berkeley) %G% */ #include "param.h" @@ -264,6 +264,11 @@ link() iput(ip); return; } + if (ip->i_nlink == LINK_MAX - 1) { + u.u_error = EMLINK; + iput(ip); + return; + } ip->i_nlink++; ip->i_flag |= ICHG; iupdat(ip, &time, &time, 1); diff --git a/usr/src/sys/ufs/ufs/ufs_vnops.c b/usr/src/sys/ufs/ufs/ufs_vnops.c index 016a175485..337aa7ffe1 100644 --- a/usr/src/sys/ufs/ufs/ufs_vnops.c +++ b/usr/src/sys/ufs/ufs/ufs_vnops.c @@ -3,7 +3,7 @@ * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * - * @(#)ufs_vnops.c 7.4 (Berkeley) %G% + * @(#)ufs_vnops.c 7.5 (Berkeley) %G% */ #include "param.h" @@ -264,6 +264,11 @@ link() iput(ip); return; } + if (ip->i_nlink == LINK_MAX - 1) { + u.u_error = EMLINK; + iput(ip); + return; + } ip->i_nlink++; ip->i_flag |= ICHG; iupdat(ip, &time, &time, 1); -- 2.20.1