diff --git a/svr-chansession.c b/svr-chansession.c
index 90c82a708d44728eb5bbd7cd5924652508f58601..a040a47b92e09d43cac716d1605eae9e734c67ef 100644
--- a/svr-chansession.c
+++ b/svr-chansession.c
@@ -862,8 +862,10 @@ static void execchild(struct ChanSess *chansess) {
 
 		if ((setgid(ses.authstate.pw->pw_gid) < 0) ||
 			(initgroups(ses.authstate.pw->pw_name, 
-						ses.authstate.pw->pw_gid) < 0) ||
-			(setuid(ses.authstate.pw->pw_uid) < 0)) {
+						ses.authstate.pw->pw_gid) < 0)) {
+			dropbear_exit("error changing user group");
+		}
+		if (setuid(ses.authstate.pw->pw_uid) < 0) {
 			dropbear_exit("error changing user");
 		}
 	} else {