summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordtucker@openbsd.org <dtucker@openbsd.org>2023-04-03 08:10:54 +0000
committerDarren Tucker <dtucker@dtucker.net>2023-04-03 18:35:04 +1000
commit09d8da0849e2791b2500267cda333cd238f38754 (patch)
tree2dd012a09a785593cbc6d912d6bc0e12b32dd2af
parentb36b162be5e6206f12b734222b7bc517c13a6bc8 (diff)
downloadopenssh-git-09d8da0849e2791b2500267cda333cd238f38754.tar.gz
upstream: Move up null check and simplify process_escapes.
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
-rw-r--r--clientloop.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/clientloop.c b/clientloop.c
index baa988af..99846a97 100644
--- a/clientloop.c
+++ b/clientloop.c
@@ -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