summaryrefslogtreecommitdiff
path: root/sys/compat/linux/common/linux_file.c
diff options
context:
space:
mode:
authorchristos <christos@NetBSD.org>1997-10-16 23:54:40 +0000
committerchristos <christos@NetBSD.org>1997-10-16 23:54:40 +0000
commit79acd83ca56e6f9b40fb75bfd95ceb7b2a208a51 (patch)
tree1b62ac416d7939f3ec9b298feef2ddf8194a2bc2 /sys/compat/linux/common/linux_file.c
parent7e8c979fa9758b5255d44dcb5add8cccea505057 (diff)
check for st_nlink overflow
Diffstat (limited to 'sys/compat/linux/common/linux_file.c')
-rw-r--r--sys/compat/linux/common/linux_file.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/compat/linux/common/linux_file.c b/sys/compat/linux/common/linux_file.c
index 5f7bd8ceefe..0e45c8fa113 100644
--- a/sys/compat/linux/common/linux_file.c
+++ b/sys/compat/linux/common/linux_file.c
@@ -1,4 +1,4 @@
-/* $NetBSD: linux_file.c,v 1.18 1997/09/05 01:49:12 kleink Exp $ */
+/* $NetBSD: linux_file.c,v 1.19 1997/10/16 23:54:40 christos Exp $ */
/*
* Copyright (c) 1995 Frank van der Linden
@@ -444,8 +444,11 @@ bsd_to_linux_stat(bsp, lsp)
lsp->lst_dev = bsp->st_dev;
lsp->lst_ino = bsp->st_ino;
- lsp->lst_mode = bsp->st_mode;
- lsp->lst_nlink = bsp->st_nlink;
+ lsp->lst_mode = (linux_mode_t)bsp->st_mode;
+ if (bsp->st_nlink >= (1 << 15))
+ lsp->lst_nlink = (1 << 15) - 1;
+ else
+ lsp->lst_nlink = (linux_nlink_t)bsp->st_nlink;
lsp->lst_uid = bsp->st_uid;
lsp->lst_gid = bsp->st_gid;
lsp->lst_rdev = linux_fakedev(bsp->st_rdev);