From 6320b13de9de1d5162b0cfd2319c6b3624dcd748 Mon Sep 17 00:00:00 2001 From: millert Date: Mon, 5 Jun 2023 13:24:36 +0000 Subject: [PATCH] Store timeouts as int, not u_int as they are limited to INT_MAX. Fixes sign compare warnings systems with 32-bit time_t due to type promotion. OK djm@ --- usr.bin/ssh/channels.c | 10 +++++----- usr.bin/ssh/channels.h | 6 +++--- usr.bin/ssh/servconf.c | 9 +++++---- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/usr.bin/ssh/channels.c b/usr.bin/ssh/channels.c index 6f3b8a7cc0a..7351b3b6d8d 100644 --- a/usr.bin/ssh/channels.c +++ b/usr.bin/ssh/channels.c @@ -1,4 +1,4 @@ -/* $OpenBSD: channels.c,v 1.430 2023/03/10 03:01:51 dtucker Exp $ */ +/* $OpenBSD: channels.c,v 1.431 2023/06/05 13:24:36 millert Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -146,7 +146,7 @@ struct permission_set { /* Used to record timeouts per channel type */ struct ssh_channel_timeout { char *type_pattern; - u_int timeout_secs; + int timeout_secs; }; /* Master structure for channels state */ @@ -304,11 +304,11 @@ channel_lookup(struct ssh *ssh, int id) */ void channel_add_timeout(struct ssh *ssh, const char *type_pattern, - u_int timeout_secs) + int timeout_secs) { struct ssh_channels *sc = ssh->chanctxt; - debug2_f("channel type \"%s\" timeout %u seconds", + debug2_f("channel type \"%s\" timeout %d seconds", type_pattern, timeout_secs); sc->timeouts = xrecallocarray(sc->timeouts, sc->ntimeouts, sc->ntimeouts + 1, sizeof(*sc->timeouts)); @@ -332,7 +332,7 @@ channel_clear_timeouts(struct ssh *ssh) sc->ntimeouts = 0; } -static u_int +static int lookup_timeout(struct ssh *ssh, const char *type) { struct ssh_channels *sc = ssh->chanctxt; diff --git a/usr.bin/ssh/channels.h b/usr.bin/ssh/channels.h index 0dceef0cf34..fae9cbd7fbf 100644 --- a/usr.bin/ssh/channels.h +++ b/usr.bin/ssh/channels.h @@ -1,4 +1,4 @@ -/* $OpenBSD: channels.h,v 1.149 2023/03/04 03:22:59 dtucker Exp $ */ +/* $OpenBSD: channels.h,v 1.150 2023/06/05 13:24:36 millert Exp $ */ /* * Author: Tatu Ylonen @@ -207,7 +207,7 @@ struct Channel { /* Last traffic seen for OPEN channels */ time_t lastused; /* Inactivity timeout deadline in seconds (0 = no timeout) */ - u_int inactive_deadline; + int inactive_deadline; }; #define CHAN_EXTENDED_IGNORE 0 @@ -305,7 +305,7 @@ int channel_close_fd(struct ssh *, Channel *, int *); void channel_send_window_changes(struct ssh *); /* channel inactivity timeouts */ -void channel_add_timeout(struct ssh *, const char *, u_int); +void channel_add_timeout(struct ssh *, const char *, int); void channel_clear_timeouts(struct ssh *); /* mux proxy support */ diff --git a/usr.bin/ssh/servconf.c b/usr.bin/ssh/servconf.c index 6d056f7d0ae..862b02068cb 100644 --- a/usr.bin/ssh/servconf.c +++ b/usr.bin/ssh/servconf.c @@ -1,5 +1,5 @@ -/* $OpenBSD: servconf.c,v 1.393 2023/05/24 23:01:06 djm Exp $ */ +/* $OpenBSD: servconf.c,v 1.394 2023/06/05 13:24:36 millert Exp $ */ /* * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland * All rights reserved @@ -908,7 +908,7 @@ process_permitopen(struct ssh *ssh, ServerOptions *options) /* Parse a ChannelTimeout clause "pattern=interval" */ static int -parse_timeout(const char *s, char **typep, u_int *secsp) +parse_timeout(const char *s, char **typep, int *secsp) { char *cp, *sdup; int secs; @@ -934,7 +934,7 @@ parse_timeout(const char *s, char **typep, u_int *secsp) if (typep != NULL) *typep = xstrdup(sdup); if (secsp != NULL) - *secsp = (u_int)secs; + *secsp = secs; free(sdup); return 0; } @@ -942,7 +942,8 @@ parse_timeout(const char *s, char **typep, u_int *secsp) void process_channel_timeouts(struct ssh *ssh, ServerOptions *options) { - u_int i, secs; + int secs; + u_int i; char *type; debug3_f("setting %u timeouts", options->num_channel_timeouts); -- 2.20.1