Store timeouts as int, not u_int as they are limited to INT_MAX.
authormillert <millert@openbsd.org>
Mon, 5 Jun 2023 13:24:36 +0000 (13:24 +0000)
committermillert <millert@openbsd.org>
Mon, 5 Jun 2023 13:24:36 +0000 (13:24 +0000)
Fixes sign compare warnings systems with 32-bit time_t due to type
promotion.  OK djm@

usr.bin/ssh/channels.c
usr.bin/ssh/channels.h
usr.bin/ssh/servconf.c

index 6f3b8a7..7351b3b 100644 (file)
@@ -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 <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, 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;
index 0dceef0..fae9cbd 100644 (file)
@@ -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 <ylo@cs.hut.fi>
@@ -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 */
index 6d056f7..862b020 100644 (file)
@@ -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 <ylo@cs.hut.fi>, 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);