Return EINVAL in case when the incorrect or unsupported

type argument is specified.

Do not map type argument value as its Linux values are
identical to FreeBSD values.

Approved by:	kib (mentor)
This commit is contained in:
Dmitry Chagin 2009-05-16 18:46:51 +00:00
parent 6994ea543f
commit eeb63e515f
2 changed files with 12 additions and 0 deletions

View File

@ -597,6 +597,8 @@ linux_socket(struct thread *td, struct linux_socket_args *args)
bsd_args.protocol = args->protocol;
bsd_args.type = args->type;
if (bsd_args.type < 0 || bsd_args.type > LINUX_SOCK_MAX)
return (EINVAL);
bsd_args.domain = linux_to_bsd_domain(args->domain);
if (bsd_args.domain == -1)
return (EAFNOSUPPORT);

View File

@ -90,6 +90,16 @@
#define LINUX_AF_APPLETALK 5
#define LINUX_AF_INET6 10
/* Supported socket types */
#define LINUX_SOCK_STREAM 1
#define LINUX_SOCK_DGRAM 2
#define LINUX_SOCK_RAW 3
#define LINUX_SOCK_RDM 4
#define LINUX_SOCK_SEQPACKET 5
#define LINUX_SOCK_MAX LINUX_SOCK_SEQPACKET
struct l_ucred {
uint32_t pid;
uint32_t uid;