patch-2.4.22 linux-2.4.22/kernel/sys.c
Next file: linux-2.4.22/kernel/sysctl.c
Previous file: linux-2.4.22/kernel/sched.c
Back to the patch index
Back to the overall index
- Lines: 48
- Date:
2003-08-25 04:44:44.000000000 -0700
- Orig file:
linux-2.4.21/kernel/sys.c
- Orig date:
2003-06-13 07:51:39.000000000 -0700
diff -urN linux-2.4.21/kernel/sys.c linux-2.4.22/kernel/sys.c
@@ -1045,6 +1045,7 @@
asmlinkage long sys_sethostname(char *name, int len)
{
int errno;
+ char tmp[__NEW_UTS_LEN];
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
@@ -1052,7 +1053,8 @@
return -EINVAL;
down_write(&uts_sem);
errno = -EFAULT;
- if (!copy_from_user(system_utsname.nodename, name, len)) {
+ if (!copy_from_user(tmp, name, len)) {
+ memcpy(system_utsname.nodename, tmp, len);
system_utsname.nodename[len] = 0;
errno = 0;
}
@@ -1084,6 +1086,7 @@
asmlinkage long sys_setdomainname(char *name, int len)
{
int errno;
+ char tmp[__NEW_UTS_LEN];
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
@@ -1092,9 +1095,10 @@
down_write(&uts_sem);
errno = -EFAULT;
- if (!copy_from_user(system_utsname.domainname, name, len)) {
- errno = 0;
+ if (!copy_from_user(tmp, name, len)) {
+ memcpy(system_utsname.domainname, tmp, len);
system_utsname.domainname[len] = 0;
+ errno = 0;
}
up_write(&uts_sem);
return errno;
@@ -1139,6 +1143,8 @@
return -EINVAL;
if(copy_from_user(&new_rlim, rlim, sizeof(*rlim)))
return -EFAULT;
+ if (new_rlim.rlim_cur > new_rlim.rlim_max)
+ return -EINVAL;
old_rlim = current->rlim + resource;
if (((new_rlim.rlim_cur > old_rlim->rlim_max) ||
(new_rlim.rlim_max > old_rlim->rlim_max)) &&
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)