ytht原来的smth_sshbbsd判断是否guest登陆的逻辑有错误,改了一下
smth_sshbbsd/auth-passwd.c
auth_password()函数
if (password[0] == '\0'||!strcasecmp(server_user,"guest")||!strcasecmp(server_user,"new"))
return 0;
改成
if (!strcasecmp(server_user, "guest"))
return 1;
if (password[0] == '\0')
return 0;
原先的逻辑明显有错误,按照他那个写法至少也要写成
if (password[0] == '\0' && (!strcasecmp(server_user, "guest") || (!strcasecmp(server_user, "new"))
return 1;
才能让guest登陆,不知道原先ytht写的这段是什么用意。。。
但是看了一下,实现telnet下的new登陆是不大可能简简单单就实现了的,所以索性不判断new了,判断guest的时候也不用对密码做要求,所以也不要判断password[0]了,但判断是否是guest之后要检查password[0]。
因为进auth_password函数之前执行过 dosearchuser(user) 了,所以也就不用再对new做检查了。
另外在 bbs.zzu.edu.cn 还做了点别的修改,比较实用的就是在判断 user[0] 那块多加了个判断user[0] 是不是数字的,因为id里不能出现数字,所以索性在这里就让他断掉,不要进去后面跑 dosearchuser(user) 浪费资源
再有就是 do_authentication_fail_loop() 那个函数。。。比较bt,不能让他那么死循环下去吧。。。改了一下,还是给个循环次数的好。。。
--
FROM 166.111.161.221