]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: Move up null check and simplify process_escapes.
authordtucker@openbsd.org <dtucker@openbsd.org>
Mon, 3 Apr 2023 08:10:54 +0000 (08:10 +0000)
committerDarren Tucker <dtucker@dtucker.net>
Mon, 3 Apr 2023 08:35:04 +0000 (18:35 +1000)
Based on Coverity CID 291863 which points out we check the channel
pointer for NULLness after dereferencing it.  Move this to the start
of the function, and while there simplify initialization of efc a bit.
ok djm@

OpenBSD-Commit-ID: de36e5ad6fde0fe263ca134e986b9095dc59380a

clientloop.c

index baa988af4e8927b6ff2d8ca5ac204fc54a89657b..99846a97839716286a743aa86bbb021f79011f86 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: clientloop.c,v 1.391 2023/03/31 04:04:15 djm Exp $ */
+/* $OpenBSD: clientloop.c,v 1.392 2023/04/03 08:10:54 dtucker Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1005,14 +1005,12 @@ process_escapes(struct ssh *ssh, Channel *c,
        u_int i;
        u_char ch;
        char *s;
-       struct escape_filter_ctx *efc = c->filter_ctx == NULL ?
-           NULL : (struct escape_filter_ctx *)c->filter_ctx;
+       struct escape_filter_ctx *efc;
 
-       if (c->filter_ctx == NULL)
+       if (c == NULL || c->filter_ctx == NULL || len <= 0)
                return 0;
 
-       if (len <= 0)
-               return (0);
+       efc = (struct escape_filter_ctx *)c->filter_ctx;
 
        for (i = 0; i < (u_int)len; i++) {
                /* Get one character at a time. */
@@ -1109,7 +1107,7 @@ process_escapes(struct ssh *ssh, Channel *c,
                                continue;
 
                        case '&':
-                               if (c && c->ctl_chan != -1)
+                               if (c->ctl_chan != -1)
                                        goto noescape;
                                /*
                                 * Detach the program (continue to serve