[openssh-commits] [openssh] 02/02: upstream: revert recent strdelim() change, it causes problems with

git+noreply at mindrot.org git+noreply at mindrot.org
Mon Mar 12 11:48:22 AEDT 2018


This is an automated email from the git hooks/post-receive script.

djm pushed a commit to branch master
in repository openssh.

commit c7c458e8261b04d161763cd333d74e7a5842e917
Author: djm at openbsd.org <djm at openbsd.org>
Date:   Wed Mar 7 23:53:08 2018 +0000

    upstream: revert recent strdelim() change, it causes problems with
    
    some configs.
    
    revision 1.124
    date: 2018/03/02 03:02:11;  author: djm;  state: Exp;  lines: +19 -8;  commitid: nNRsCijZiGG6SUTT;
    Allow escaped quotes \" and \' in ssh_config and sshd_config quotes
    option strings. bz#1596 ok markus@
    
    OpenBSD-Commit-ID: 59c40b1b81206d713c06b49d8477402c86babda5
---
 misc.c | 27 ++++++++-------------------
 1 file changed, 8 insertions(+), 19 deletions(-)

diff --git a/misc.c b/misc.c
index 1e660b02..fbc36310 100644
--- a/misc.c
+++ b/misc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: misc.c,v 1.125 2018/03/03 03:15:51 djm Exp $ */
+/* $OpenBSD: misc.c,v 1.126 2018/03/07 23:53:08 djm Exp $ */
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
  * Copyright (c) 2005,2006 Damien Miller.  All rights reserved.
@@ -242,7 +242,7 @@ set_rdomain(int fd, const char *name)
 char *
 strdelim(char **s)
 {
-	char *old, *cp;
+	char *old;
 	int wspace = 0;
 
 	if (*s == NULL)
@@ -256,24 +256,13 @@ strdelim(char **s)
 
 	if (*s[0] == '\"') {
 		memmove(*s, *s + 1, strlen(*s)); /* move nul too */
-
 		/* Find matching quote */
-		for (cp = *s; ; cp++) {
-			if (*cp == '\0')
-				return NULL; /* no matching quote */
-			if (*cp == '\\') {
-				/* Escape sequence */
-				if (cp[1] == '\"' || cp[1] == '\'' ||
-				    cp[1] == '\\') {
-					memmove(cp, cp + 1, strlen(cp));
-					continue;
-				}
-				return NULL; /* invalid escape */
-			} else if (*cp == '\"') {
-				*(cp++) = '\0';
-				*s += strspn(cp, WHITESPACE);
-				return old;
-			}
+		if ((*s = strpbrk(*s, QUOTE)) == NULL) {
+			return (NULL);		/* no matching quote */
+		} else {
+			*s[0] = '\0';
+			*s += strspn(*s + 1, WHITESPACE) + 1;
+			return (old);
 		}
 	}
 

-- 
To stop receiving notification emails like this one, please contact
djm at mindrot.org.


More information about the openssh-commits mailing list