Hi,
While attempting for some testing with sethostname() call, I got
this problem . As explained in the man page the sethostname call is
failing(ret val = -1 & errno = EFAULT(14)) for invalid address and valid
length. But the problem is after running the following test, hostname is
getting reset to NULL. I tested in both 2.4 & 2.5 kernels.
Any comments on this??
----------------------------------
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
main()
{
int ret, errno;
unsigned short int len;
char host[50]="tmphost"; /* hostname max size is 64 */
errno = 0;
len = sizeof(host);
/* valid length and invalid address, expected err is EFAULT */
ret = sethostname((void *)-1, len);
printf("return val : %d, err no: %d \n",ret,errno);
}
-------------------------------------------------
I saw the code of sys_sethostname() function (sys.c) , in which
copy_from_user() is being called. I would like to know is it required to
validate the name argument before calling copy_from_user() to avoid such
problems.
We could expect similar problem in setdomainname() also in which
same sort of code is used.
PS : Please CC me your replies as I havn't subscribed to the list.
Thanks,
Suresh.
This archive was generated by hypermail 2b29 : Tue Oct 15 2002 - 22:00:36 EST