199a200,203 > /* CHROOT patch start */ > char *user_dir; > char *new_root; > /* CHROOT patch end */ 200a205 > 1162a1168,1172 > char *user_dir; > char *new_root; > > user_dir = xstrdup(pw->pw_dir); > new_root = user_dir + 1; 1163a1174,1192 > while((new_root = strchr(new_root, '.')) != NULL) { > new_root--; > if(strncmp(new_root, "/./", 3) == 0) { > *new_root = '\0'; > new_root += 2; > debug("chrooting to user directory %s", user_dir); > if(chroot(user_dir) != 0) > fatal("Couldn't chroot to user directory %s", user_dir); > pw->pw_dir = new_root; > if (chdir("/") < 0) > fatal("Couldn't cd to / after chroot to user directory %s: %s", user_dir, strerror(errno)); > break; > } > new_root += 2; > fatal("Couldn't chroot %s", user_dir); > } > /* CHROOT patch end */ > >