=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/misc.c,v retrieving revision 1.162 retrieving revision 1.163 diff -u -r1.162 -r1.163 --- src/usr.bin/ssh/misc.c 2021/02/28 01:50:47 1.162 +++ src/usr.bin/ssh/misc.c 2021/04/03 05:21:46 1.163 @@ -1,4 +1,4 @@ -/* $OpenBSD: misc.c,v 1.162 2021/02/28 01:50:47 dtucker Exp $ */ +/* $OpenBSD: misc.c,v 1.163 2021/04/03 05:21:46 djm Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * Copyright (c) 2005-2020 Damien Miller. All rights reserved. @@ -1846,11 +1846,6 @@ /* Start of a token */ quote = 0; - if (s[i] == '\\' && - (s[i + 1] == '\'' || s[i + 1] == '\"' || s[i + 1] == '\\')) - i++; - else if (s[i] == '\'' || s[i] == '"') - quote = s[i++]; argv = xreallocarray(argv, (argc + 2), sizeof(*argv)); arg = argv[argc++] = xcalloc(1, strlen(s + i) + 1); @@ -1870,8 +1865,10 @@ } } else if (quote == 0 && (s[i] == ' ' || s[i] == '\t')) break; /* done */ + else if (quote == 0 && (s[i] == '\"' || s[i] == '\'')) + quote = s[i]; /* quote start */ else if (quote != 0 && s[i] == quote) - break; /* done */ + quote = 0; /* quote end */ else arg[j++] = s[i]; }