Add a version number field to the jail(2) argument so that future changes

can be handled intelligently.
This commit is contained in:
Poul-Henning Kamp 1999-09-19 08:36:03 +00:00
parent 8db3b94765
commit 978f8d9300
3 changed files with 20 additions and 6 deletions

View File

@ -28,12 +28,16 @@ system call sets up a jail and locks the current process in it.
The argument is a pointer to a structure describing the prison:
.Bd -literal -offset indent
struct jail {
char *path;
char *hostname;
u_int32_t ip_number;
u_int32_t version;
char *path;
char *hostname;
u_int32_t ip_number;
};
.Ed
.Pp
.Dq Li version
defines the version of the API in use. It should be set to zero at this time.
.Pp
The
.Dq Li path
pointer should be set to the directory which is to be the root of the
@ -70,6 +74,13 @@ it will show a field near the end of the line, either as
a single hyphen for a process at large, or the hostname currently
set for the prison for jailed processes.
.Sh ERRORS
.Fn jail
will fail if:
.Bl -tag -width EWOULDBLOCK
.It Bq Er EINVAL
The version number of the argument is not correct.
.El
Further
.Fn Jail
calls
.Xr chroot 2

View File

@ -43,6 +43,8 @@ jail(p, uap)
error = copyin(uap->jail, &j, sizeof j);
if (error)
return (error);
if (j.version != 0)
return (EINVAL);
MALLOC(pr, struct prison *, sizeof *pr , M_PRISON, M_WAITOK);
bzero((caddr_t)pr, sizeof *pr);
error = copyinstr(j.hostname, &pr->pr_host, sizeof pr->pr_host, 0);

View File

@ -14,9 +14,10 @@
#define _SYS_JAIL_H_
struct jail {
char *path;
char *hostname;
u_int32_t ip_number;
u_int32_t version;
char *path;
char *hostname;
u_int32_t ip_number;
};
#ifndef KERNEL