diff options
| author | Robin Burchell w00t@inspircd.org <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-10-02 16:03:16 +0000 |
|---|---|---|
| committer | Robin Burchell w00t@inspircd.org <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-10-02 16:03:16 +0000 |
| commit | e5051e4aa5cfc9e80ac965a6a82e4cab8d17387c (patch) | |
| tree | 0ccaead6e96584ebc2376604e5ca5c34c11b12b1 /src/nickserv.c | |
| parent | b7ed70140d6e755b49cdd3c4b9d85ec6abf30cd7 (diff) | |
Merge commit 'cbx/anopeng-uid' into anopeng-uid
Conflicts:
include/extern.h
include/services.h
src/protocol/bahamut.c
src/protocol/inspircd11.c
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1320 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/nickserv.c')
| -rw-r--r-- | src/nickserv.c | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/src/nickserv.c b/src/nickserv.c index 94db5aa3c..9ffea4a2f 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -276,9 +276,9 @@ void load_old_ns_dbase(void) /* We grabbed info before; fill the appropriate fields now */ if (*bufp) - nc->pass = sstrdup(bufp); + memcpy(nc->pass, bufp, PASSMAX); else - nc->pass = NULL; /* Which may be the case for forbidden nicks .. */ + memset(nc->pass, 0, PASSMAX); /* Which may be the case for forbidden nicks .. */ nc->email = email; nc->greet = greet; @@ -419,7 +419,8 @@ void load_ns_req_db(void) int i, c, ver; NickRequest *nr; uint32 tmp32; - int failed = 0; + int failed = 0, len; + char *pass; if (!(f = open_db(s_NickServ, PreNickDBName, "r", PRE_NICK_VERSION))) return; @@ -431,7 +432,14 @@ void load_ns_req_db(void) nr = (NickRequest *)scalloc(1, sizeof(NickRequest)); SAFE(read_string(&nr->nick, f)); SAFE(read_string(&nr->passcode, f)); - SAFE(read_string(&nr->password, f)); + if (ver < 2) { + SAFE(read_string(&pass, f)); + len = strlen(pass); + enc_encrypt(pass, len, nr->password, PASSMAX); + memset(pass, 0, len); + free(pass); + } else + SAFE(read_buffer(nr->password, f)); SAFE(read_string(&nr->email, f)); SAFE(read_int32(&tmp32, f)); nr->requested = tmp32; @@ -447,10 +455,10 @@ void load_ns_dbase(void) int ver, i, j, c; NickAlias *na, **nalast, *naprev; NickCore *nc, **nclast, *ncprev; - int failed = 0; + int failed = 0, len; uint16 tmp16; uint32 tmp32; - char *s; + char *s, *pass; if (!(f = open_db(s_NickServ, NickDBName, "r", NICK_VERSION))) return; @@ -481,7 +489,18 @@ void load_ns_dbase(void) slist_init(&nc->aliases); SAFE(read_string(&nc->display, f)); - SAFE(read_string(&nc->pass, f)); + if (ver < 14) { + SAFE(read_string(&pass, f)); + if (pass) { + len = strlen(pass); + enc_encrypt(pass, len, nc->pass, PASSMAX); + memset(pass, 0, len); + free(pass); + } else + memset(nc->pass, 0, PASSMAX); + } else + SAFE(read_buffer(nc->pass, f)); + SAFE(read_string(&nc->email, f)); SAFE(read_string(&nc->greet, f)); SAFE(read_int32(&nc->icq, f)); @@ -649,7 +668,7 @@ void save_ns_dbase(void) SAFE(write_int8(1, f)); SAFE(write_string(nc->display, f)); - SAFE(write_string(nc->pass, f)); + SAFE(write_buffer(nc->pass, f)); SAFE(write_string(nc->email, f)); SAFE(write_string(nc->greet, f)); @@ -724,7 +743,7 @@ void save_ns_req_dbase(void) SAFE(write_int8(1, f)); SAFE(write_string(nr->nick, f)); SAFE(write_string(nr->passcode, f)); - SAFE(write_string(nr->password, f)); + SAFE(write_buffer(nr->password, f)); SAFE(write_string(nr->email, f)); SAFE(write_int32(nr->requested, f)); SAFE(write_int8(0, f)); @@ -1370,8 +1389,6 @@ static int delcore(NickCore * nc) /* Now we can safely free it. */ free(nc->display); - if (nc->pass) - free(nc->pass); if (nc->email) free(nc->email); @@ -1414,8 +1431,6 @@ int delnickrequest(NickRequest * nr) free(nr->nick); if (nr->passcode) free(nr->passcode); - if (nr->password) - free(nr->password); if (nr->email) free(nr->email); free(nr); |
