[misc.c misc.h servconf.c sshd.8 sshd.c]
     sshd command-line arguments and configuration file options that
     specify time may be expressed using a sequence of the form:
     time[qualifier], where time is a positive integer value and qualifier
     is one of the following:
         <none>,s,m,h,d,w
     Examples:
         600     600 seconds (10 minutes)
         10m     10 minutes
         1h30m   1 hour 30 minutes (90 minutes)
     ok markus@
This commit is contained in:
Ben Lindstrom 2001-06-05 19:59:08 +00:00
parent bd0e2de8e5
commit 1bda4c835e
6 changed files with 170 additions and 12 deletions

View File

@ -27,6 +27,18 @@
- markus@cvs.openbsd.org 2001/05/19 16:46:19 - markus@cvs.openbsd.org 2001/05/19 16:46:19
[ssh.1 sshd.8] [ssh.1 sshd.8]
document MACs defaults with .Dq document MACs defaults with .Dq
- stevesk@cvs.openbsd.org 2001/05/19 19:43:57
[misc.c misc.h servconf.c sshd.8 sshd.c]
sshd command-line arguments and configuration file options that
specify time may be expressed using a sequence of the form:
time[qualifier], where time is a positive integer value and qualifier
is one of the following:
<none>,s,m,h,d,w
Examples:
600 600 seconds (10 minutes)
10m 10 minutes
1h30m 1 hour 30 minutes (90 minutes)
ok markus@
20010528 20010528
- (tim) [conifgure.in] add setvbuf test needed for sftp-int.c - (tim) [conifgure.in] add setvbuf test needed for sftp-int.c
@ -5457,4 +5469,4 @@
- Wrote replacements for strlcpy and mkdtemp - Wrote replacements for strlcpy and mkdtemp
- Released 1.0pre1 - Released 1.0pre1
$Id: ChangeLog,v 1.1233 2001/06/05 19:52:52 mouring Exp $ $Id: ChangeLog,v 1.1234 2001/06/05 19:59:08 mouring Exp $

64
misc.c
View File

@ -1,4 +1,4 @@
/* $OpenBSD: misc.c,v 1.8 2001/05/11 14:59:56 markus Exp $ */ /* $OpenBSD: misc.c,v 1.9 2001/05/19 19:43:57 stevesk Exp $ */
/* /*
* Copyright (c) 2000 Markus Friedl. All rights reserved. * Copyright (c) 2000 Markus Friedl. All rights reserved.
@ -25,7 +25,7 @@
*/ */
#include "includes.h" #include "includes.h"
RCSID("$OpenBSD: misc.c,v 1.8 2001/05/11 14:59:56 markus Exp $"); RCSID("$OpenBSD: misc.c,v 1.9 2001/05/19 19:43:57 stevesk Exp $");
#include "misc.h" #include "misc.h"
#include "log.h" #include "log.h"
@ -154,6 +154,66 @@ int a2port(const char *s)
return port; return port;
} }
#define SECONDS 1
#define MINUTES (SECONDS * 60)
#define HOURS (MINUTES * 60)
#define DAYS (HOURS * 24)
#define WEEKS (DAYS * 7)
long convtime(const char *s)
{
long total, secs;
const char *p;
char *endp;
errno = 0;
total = 0;
p = s;
if (p == NULL || *p == '\0')
return -1;
while (*p) {
secs = strtol(p, &endp, 10);
if (p == endp ||
(errno == ERANGE && (secs == LONG_MIN || secs == LONG_MAX)) ||
secs < 0)
return -1;
switch (*endp++) {
case '\0':
endp--;
case 's':
case 'S':
break;
case 'm':
case 'M':
secs *= MINUTES;
break;
case 'h':
case 'H':
secs *= HOURS;
break;
case 'd':
case 'D':
secs *= DAYS;
break;
case 'w':
case 'W':
secs *= WEEKS;
break;
default:
return -1;
}
total += secs;
if (total < 0)
return -1;
p = endp;
}
return total;
}
char * char *
cleanhostname(char *host) cleanhostname(char *host)
{ {

26
misc.h
View File

@ -1,4 +1,4 @@
/* $OpenBSD: misc.h,v 1.7 2001/05/11 14:59:56 markus Exp $ */ /* $OpenBSD: misc.h,v 1.8 2001/05/19 19:43:57 stevesk Exp $ */
/* /*
* Author: Tatu Ylonen <ylo@cs.hut.fi> * Author: Tatu Ylonen <ylo@cs.hut.fi>
@ -34,6 +34,30 @@ int a2port(const char *s);
char *cleanhostname(char *host); char *cleanhostname(char *host);
char *colon(char *cp); char *colon(char *cp);
/*
* Convert a time string into seconds; format is
* a sequence of:
* time[qualifier]
*
* Valid time qualifiers are:
* <none> seconds
* s|S seconds
* m|M minutes
* h|H hours
* d|D days
* w|W weeks
*
* Examples:
* 90m 90 minutes
* 1h30m 90 minutes
* 2d 2 days
* 1w 1 week
*
* Return -1 if time string is invalid.
*/
long convtime(const char *s);
/* function to assist building execv() arguments */ /* function to assist building execv() arguments */
typedef struct arglist arglist; typedef struct arglist arglist;
struct arglist { struct arglist {

View File

@ -10,7 +10,7 @@
*/ */
#include "includes.h" #include "includes.h"
RCSID("$OpenBSD: servconf.c,v 1.80 2001/05/18 14:13:29 markus Exp $"); RCSID("$OpenBSD: servconf.c,v 1.81 2001/05/19 19:43:57 stevesk Exp $");
#ifdef KRB4 #ifdef KRB4
#include <krb.h> #include <krb.h>
@ -429,11 +429,21 @@ parse_int:
case sLoginGraceTime: case sLoginGraceTime:
intptr = &options->login_grace_time; intptr = &options->login_grace_time;
goto parse_int; parse_time:
arg = strdelim(&cp);
if (!arg || *arg == '\0')
fatal("%s line %d: missing time value.",
filename, linenum);
if ((value = convtime(arg)) == -1)
fatal("%s line %d: invalid time value.",
filename, linenum);
if (*intptr == -1)
*intptr = value;
break;
case sKeyRegenerationTime: case sKeyRegenerationTime:
intptr = &options->key_regeneration_time; intptr = &options->key_regeneration_time;
goto parse_int; goto parse_time;
case sListenAddress: case sListenAddress:
arg = strdelim(&cp); arg = strdelim(&cp);
@ -792,12 +802,15 @@ parse_flag:
case sBanner: case sBanner:
charptr = &options->banner; charptr = &options->banner;
goto parse_filename; goto parse_filename;
case sClientAliveInterval: case sClientAliveInterval:
intptr = &options->client_alive_interval; intptr = &options->client_alive_interval;
goto parse_int; goto parse_time;
case sClientAliveCountMax: case sClientAliveCountMax:
intptr = &options->client_alive_count_max; intptr = &options->client_alive_count_max;
goto parse_int; goto parse_int;
case sPAMAuthenticationViaKbdInt: case sPAMAuthenticationViaKbdInt:
intptr = &options->pam_authentication_via_kbd_int; intptr = &options->pam_authentication_via_kbd_int;
goto parse_flag; goto parse_flag;

45
sshd.8
View File

@ -34,7 +34,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.\" $OpenBSD: sshd.8,v 1.123 2001/05/19 16:46:19 markus Exp $ .\" $OpenBSD: sshd.8,v 1.124 2001/05/19 19:43:57 stevesk Exp $
.Dd September 25, 1999 .Dd September 25, 1999
.Dt SSHD 8 .Dt SSHD 8
.Os .Os
@ -794,6 +794,49 @@ program.
The default is The default is
.Pa /usr/X11R6/bin/xauth . .Pa /usr/X11R6/bin/xauth .
.El .El
.Ss Time Formats
.Pp
.Nm
command-line arguments and configuration file options that specify time
may be expressed using a sequence of the form:
.Sm off
.Ar time Oo Ar qualifier Oc ,
.Sm on
where
.Ar time
is a positive integer value and
.Ar qualifier
is one of the following:
.Pp
.Bl -tag -width Ds -compact -offset indent
.It Cm <none>
seconds
.It Cm s | Cm S
seconds
.It Cm m | Cm M
minutes
.It Cm h | Cm H
hours
.It Cm d | Cm D
days
.It Cm w | Cm W
weeks
.El
.Pp
Each member of the sequence is added together to calculate
the total time value.
.Pp
Time format examples:
.Pp
.Bl -tag -width Ds -compact -offset indent
.It 600
600 seconds (10 minutes)
.It 10m
10 minutes
.It 1h30m
1 hour 30 minutes (90 minutes)
.El
.Sh LOGIN PROCESS .Sh LOGIN PROCESS
When a user successfully logs in, When a user successfully logs in,
.Nm .Nm

12
sshd.c
View File

@ -40,7 +40,7 @@
*/ */
#include "includes.h" #include "includes.h"
RCSID("$OpenBSD: sshd.c,v 1.196 2001/05/18 14:13:29 markus Exp $"); RCSID("$OpenBSD: sshd.c,v 1.197 2001/05/19 19:43:57 stevesk Exp $");
#include <openssl/dh.h> #include <openssl/dh.h>
#include <openssl/bn.h> #include <openssl/bn.h>
@ -618,10 +618,16 @@ main(int ac, char **av)
} }
break; break;
case 'g': case 'g':
options.login_grace_time = atoi(optarg); if ((options.login_grace_time = convtime(optarg)) == -1) {
fprintf(stderr, "Invalid login grace time.\n");
exit(1);
}
break; break;
case 'k': case 'k':
options.key_regeneration_time = atoi(optarg); if ((options.key_regeneration_time = convtime(optarg)) == -1) {
fprintf(stderr, "Invalid key regeneration interval.\n");
exit(1);
}
break; break;
case 'h': case 'h':
if (options.num_host_key_files >= MAX_HOSTKEYS) { if (options.num_host_key_files >= MAX_HOSTKEYS) {