[PATCH] dsync: fix splitting login from host

Thomas Reifferscheid
Mon, 03 Jul 2017 20:06:21 -0000

Using strchr() was splitting login and host at the first
occurrence of '@' which leads to troublesome behaviour.
When calling strace one would notice the misbehaviour:

execve("/usr/sbin/ssh", ["ssh", "-lthomas",
"domain.org at 10.8.13.2"

using strrch() however splits login and host at the last occurrence
of '@'.

Signed-off-by: Thomas Reifferscheid <thomas at reifferscheid.org>
---
 src/doveadm/doveadm-dsync.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/doveadm/doveadm-dsync.c b/src/doveadm/doveadm-dsync.c
index caf569f1d..3b8d4549a 100644
--- a/src/doveadm/doveadm-dsync.c
+++ b/src/doveadm/doveadm-dsync.c
@@ -479,7 +479,7 @@ parse_ssh_location(const char *location, const char
*username)
 {
 	const char *host, *login;

-	host = strchr(location, '@');
+	host = strrchr(location, '@');
 	if (host != NULL)
 		login = t_strdup_until(location, host++);
 	else {
--
2.11.0