Don't insist on 4 digit umasks in ``set server''.

Pointed out by: joerg
This commit is contained in:
Brian Somers 1999-11-13 16:18:40 +00:00
parent 9b1b0fc0e0
commit e6ee5b3933
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=53125
3 changed files with 12 additions and 20 deletions

View File

@ -1179,9 +1179,6 @@ SetStoppedTimeout(struct cmdargs const *arg)
return -1; return -1;
} }
#define ismask(x) \
(*x == '0' && strlen(x) == 4 && strspn(x+1, "0123456789.") == 3)
static int static int
SetServer(struct cmdargs const *arg) SetServer(struct cmdargs const *arg)
{ {
@ -1189,6 +1186,7 @@ SetServer(struct cmdargs const *arg)
if (arg->argc > arg->argn && arg->argc < arg->argn+4) { if (arg->argc > arg->argn && arg->argc < arg->argn+4) {
const char *port, *passwd, *mask; const char *port, *passwd, *mask;
int mlen;
/* What's what ? */ /* What's what ? */
port = arg->argv[arg->argn]; port = arg->argv[arg->argn];
@ -1198,8 +1196,13 @@ SetServer(struct cmdargs const *arg)
} else if (arg->argc == arg->argn + 3) { } else if (arg->argc == arg->argn + 3) {
passwd = arg->argv[arg->argn+1]; passwd = arg->argv[arg->argn+1];
mask = arg->argv[arg->argn+2]; mask = arg->argv[arg->argn+2];
if (!ismask(mask)) mlen = strlen(mask);
if (mlen == 0 || mlen > 4 || strspn(mask, "01234567") != mlen ||
(mlen == 4 && *mask != '0')) {
log_Printf(LogWARN, "%s %s: %s: Invalid mask\n",
arg->argv[arg->argn - 2], arg->argv[arg->argn - 1], mask);
return -1; return -1;
}
} else if (strcasecmp(port, "none") == 0) { } else if (strcasecmp(port, "none") == 0) {
if (server_Close(arg->bundle)) if (server_Close(arg->bundle))
log_Printf(LogPHASE, "Disabled server port.\n"); log_Printf(LogPHASE, "Disabled server port.\n");
@ -1214,15 +1217,10 @@ SetServer(struct cmdargs const *arg)
mode_t imask; mode_t imask;
char *ptr, name[LINE_LEN + 12]; char *ptr, name[LINE_LEN + 12];
if (mask != NULL) { if (mask == NULL)
unsigned m;
if (sscanf(mask, "%o", &m) == 1)
imask = m;
else
return -1;
} else
imask = (mode_t)-1; imask = (mode_t)-1;
else for (imask = mlen = 0; mask[mlen]; mlen++)
imask = (imask * 8) + mask[mlen] - '0';
ptr = strstr(port, "%d"); ptr = strstr(port, "%d");
if (ptr) { if (ptr) {

View File

@ -4499,10 +4499,7 @@ If you wish to specify a local domain socket,
.Ar LocalName .Ar LocalName
must be specified as an absolute file name, otherwise it is assumed must be specified as an absolute file name, otherwise it is assumed
to be the name or number of a TCP port. You must specify the octal umask to be the name or number of a TCP port. You must specify the octal umask
that should be used with local domain sockets as a four character octal to be used with a local domain socket. Refer to
number beginning with
.Sq 0 .
Refer to
.Xr umask 2 .Xr umask 2
for umask details. Refer to for umask details. Refer to
.Xr services 5 .Xr services 5

View File

@ -4499,10 +4499,7 @@ If you wish to specify a local domain socket,
.Ar LocalName .Ar LocalName
must be specified as an absolute file name, otherwise it is assumed must be specified as an absolute file name, otherwise it is assumed
to be the name or number of a TCP port. You must specify the octal umask to be the name or number of a TCP port. You must specify the octal umask
that should be used with local domain sockets as a four character octal to be used with a local domain socket. Refer to
number beginning with
.Sq 0 .
Refer to
.Xr umask 2 .Xr umask 2
for umask details. Refer to for umask details. Refer to
.Xr services 5 .Xr services 5