summaryrefslogtreecommitdiffstats
path: root/mbbsd/admin.c
diff options
context:
space:
mode:
authorvictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-08-08 14:49:40 +0800
committervictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-08-08 14:49:40 +0800
commit299369f41fae2c8ab2886ef41ad24815241707aa (patch)
tree6e35e4527fe15ae8e7484e492e976394da97a22b /mbbsd/admin.c
parent0472f505661582dcaccf2d1a024abf14f2c75e5b (diff)
downloadpttbbs-299369f41fae2c8ab2886ef41ad24815241707aa.tar
pttbbs-299369f41fae2c8ab2886ef41ad24815241707aa.tar.gz
pttbbs-299369f41fae2c8ab2886ef41ad24815241707aa.tar.bz2
pttbbs-299369f41fae2c8ab2886ef41ad24815241707aa.tar.lz
pttbbs-299369f41fae2c8ab2886ef41ad24815241707aa.tar.xz
pttbbs-299369f41fae2c8ab2886ef41ad24815241707aa.tar.zst
pttbbs-299369f41fae2c8ab2886ef41ad24815241707aa.zip
fix race condition of user registeration (as well as while restoring a
backed-up account): Procoess A Process B ====================== ===================== uid = searchuser("") uid = searchuser("") setuserid(uid, userid) setuserid(uid, userid) git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3007 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/admin.c')
-rw-r--r--mbbsd/admin.c16
1 files changed, 1 insertions, 15 deletions
diff --git a/mbbsd/admin.c b/mbbsd/admin.c
index cb79582c..eb6b47d1 100644
--- a/mbbsd/admin.c
+++ b/mbbsd/admin.c
@@ -141,21 +141,7 @@ search_key_user(const char *passwdfile, int mode)
outs("目前的PASSWDS檔沒有此id "
"請先new一個這個id的帳號");
} else {
- int allocid = getnewuserid();
-
- if (allocid > MAX_USERS || allocid <= 0) {
- fprintf(stderr, "本站人口已達飽和!\n");
- exit(1);
- }
- if (passwd_update(allocid, &user) == -1) {
- fprintf(stderr, "客滿了,再見!\n");
- exit(1);
- }
- setuserid(allocid, user.userid);
- if (!searchuser(user.userid, NULL)) {
- fprintf(stderr, "無法建立帳號\n");
- exit(1);
- }
+ setupnewuser(&user);
fclose(fp1);
return 0;
}