diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/cs_getpass.c | 10 | ||||
-rw-r--r-- | src/core/cs_register.c | 19 | ||||
-rw-r--r-- | src/core/cs_set.c | 7 | ||||
-rw-r--r-- | src/core/enc_none.c | 3 | ||||
-rw-r--r-- | src/core/ns_getpass.c | 8 | ||||
-rw-r--r-- | src/core/ns_register.c | 6 | ||||
-rw-r--r-- | src/core/ns_saset.c | 11 | ||||
-rw-r--r-- | src/core/ns_set.c | 11 |
8 files changed, 33 insertions, 42 deletions
diff --git a/src/core/cs_getpass.c b/src/core/cs_getpass.c index b0babe98b..94ec03efa 100644 --- a/src/core/cs_getpass.c +++ b/src/core/cs_getpass.c @@ -84,7 +84,7 @@ int do_getpass(User * u) } else if (CSRestrictGetPass && !is_services_root(u)) { notice_lang(s_ChanServ, u, PERMISSION_DENIED); } else { - if(enc_decrypt(ci->founderpass,tmp_pass,PASSMAX)==1) { + if(enc_decrypt(ci->founderpass,tmp_pass,PASSMAX)==1) { alog("%s: %s!%s@%s used GETPASS on %s", s_ChanServ, u->nick, u->username, u->host, ci->name); if (WallGetpass) { @@ -93,10 +93,10 @@ int do_getpass(User * u) u->nick, chan); } notice_lang(s_ChanServ, u, CHAN_GETPASS_PASSWORD_IS, - chan, ci->founderpass); - } else { - notice_lang(s_ChanServ, u, CHAN_GETPASS_UNAVAILABLE); - } + chan, tmp_pass); + } else { + notice_lang(s_ChanServ, u, CHAN_GETPASS_UNAVAILABLE); + } } return MOD_CONT; } diff --git a/src/core/cs_register.c b/src/core/cs_register.c index 4fac58578..73319b36f 100644 --- a/src/core/cs_register.c +++ b/src/core/cs_register.c @@ -118,14 +118,14 @@ int do_register(User * u) } else if (!is_servadmin && nc->channelmax > 0 && nc->channelcount >= nc->channelmax) { - notice_lang(s_ChanServ, u, - nc->channelcount > - nc-> - channelmax ? CHAN_EXCEEDED_CHANNEL_LIMIT : + notice_lang(s_ChanServ, u, nc->channelcount > + nc->channelmax ? CHAN_EXCEEDED_CHANNEL_LIMIT : CHAN_REACHED_CHANNEL_LIMIT, nc->channelmax); } else if (stricmp(u->nick, pass) == 0 || (StrictPasswords && strlen(pass) < 5)) { notice_lang(s_ChanServ, u, MORE_OBSCURE_PASSWORD); + } else if(enc_encrypt_check_len(strlen(pass) ,PASSMAX)) { + notice_lang(s_ChanServ, u, PASSWORD_TOO_LONG); } else if (!(ci = makechan(chan))) { alog("%s: makechan() failed for REGISTER %s", s_ChanServ, chan); notice_lang(s_ChanServ, u, CHAN_REGISTRATION_FAILED); @@ -145,8 +145,7 @@ int do_register(User * u) ci->memos.memomax = MSMaxMemos; ci->last_used = ci->time_registered; ci->founder = nc; - if (strlen(pass) > PASSMAX) - notice_lang(s_ChanServ, u, PASSWORD_TRUNCATED, PASSMAX); + memset(pass, 0, strlen(pass)); memcpy(ci->founderpass, founderpass, PASSMAX); ci->desc = sstrdup(desc); @@ -164,10 +163,10 @@ int do_register(User * u) alog("%s: Channel '%s' registered by %s!%s@%s", s_ChanServ, chan, u->nick, u->username, u->host); notice_lang(s_ChanServ, u, CHAN_REGISTERED, chan, u->nick); - - if(enc_decrypt(ci->founderpass,tmp_pass,PASSMAX) == 1) { - notice_lang(s_ChanServ, u, CHAN_PASSWORD_IS, ci->founderpass); - } + + if(enc_decrypt(ci->founderpass,tmp_pass,PASSMAX) == 1) { + notice_lang(s_ChanServ, u, CHAN_PASSWORD_IS, tmp_pass); + } uc = scalloc(sizeof(*uc), 1); uc->next = u->founder_chans; diff --git a/src/core/cs_set.c b/src/core/cs_set.c index 24a749662..9225f434f 100644 --- a/src/core/cs_set.c +++ b/src/core/cs_set.c @@ -373,10 +373,9 @@ int do_set_password(User * u, ChannelInfo * ci, char *param) return MOD_CONT; } - if (len > PASSMAX) { - len = PASSMAX; - param[len] = 0; - notice_lang(s_ChanServ, u, PASSWORD_TRUNCATED, PASSMAX); + if (enc_encrypt_check_len(len ,PASSMAX)) { + notice_lang(s_ChanServ, u, PASSWORD_TOO_LONG); + return MOD_CONT; } if (enc_encrypt(param, len, ci->founderpass, PASSMAX) < 0) { diff --git a/src/core/enc_none.c b/src/core/enc_none.c index 2e6316648..871a85620 100644 --- a/src/core/enc_none.c +++ b/src/core/enc_none.c @@ -61,8 +61,9 @@ int plain_encrypt_check_len(int passlen, int bufsize) { } int plain_decrypt(const char *src, char *dest, int size) { - memset(dest,0,size+1); + memset(dest,0,size); strncpy(dest,src,size); + dest[size] = '\0'; return 1; } diff --git a/src/core/ns_getpass.c b/src/core/ns_getpass.c index 8fc917306..d15f5d086 100644 --- a/src/core/ns_getpass.c +++ b/src/core/ns_getpass.c @@ -96,17 +96,17 @@ int do_getpass(User * u) } else if (NSRestrictGetPass && !is_services_root(u)) { notice_lang(s_NickServ, u, PERMISSION_DENIED); } else { - if(enc_decrypt(na->nc->pass,tmp_pass,PASSMAX)==1) { + if(enc_decrypt(na->nc->pass,tmp_pass,PASSMAX)==1) { alog("%s: %s!%s@%s used GETPASS on %s", s_NickServ, u->nick, u->username, u->host, nick); if (WallGetpass) anope_cmd_global(s_NickServ, "\2%s\2 used GETPASS on \2%s\2", u->nick, nick); notice_lang(s_NickServ, u, NICK_GETPASS_PASSWORD_IS, nick, - na->nc->pass); - } else { + tmp_pass); + } else { notice_lang(s_NickServ, u, NICK_GETPASS_UNAVAILABLE); - } + } } return MOD_CONT; } diff --git a/src/core/ns_register.c b/src/core/ns_register.c index 5ee5f6542..de9ec7d7b 100644 --- a/src/core/ns_register.c +++ b/src/core/ns_register.c @@ -185,13 +185,11 @@ int do_register(User * u) } else if (stricmp(u->nick, pass) == 0 || (StrictPasswords && strlen(pass) < 5)) { notice_lang(s_NickServ, u, MORE_OBSCURE_PASSWORD); + } else if (enc_encrypt_check_len(strlen(pass), PASSMAX)) { + notice_lang(s_NickServ, u, PASSWORD_TOO_LONG); } else if (email && !MailValidate(email)) { notice_lang(s_NickServ, u, MAIL_X_INVALID, email); } else { - if (strlen(pass) > PASSMAX) { - pass[PASSMAX] = '\0'; - notice_lang(s_NickServ, u, PASSWORD_TRUNCATED, PASSMAX); - } for (idx = 0; idx < 9; idx++) { passcode[idx] = chars[(1 + diff --git a/src/core/ns_saset.c b/src/core/ns_saset.c index ce790d6b2..937ccd42b 100644 --- a/src/core/ns_saset.c +++ b/src/core/ns_saset.c @@ -235,12 +235,9 @@ int do_saset_password(User * u, NickCore * nc, char *param) || (StrictPasswords && len < 5)) { notice_lang(s_NickServ, u, MORE_OBSCURE_PASSWORD); return MOD_CONT; - } - - if (len > PASSMAX) { - len = PASSMAX; - param[len] = 0; - notice_lang(s_NickServ, u, PASSWORD_TRUNCATED, PASSMAX); + } else if (enc_encrypt_check_len(len ,PASSMAX)) { + notice_lang(s_NickServ, u, PASSWORD_TOO_LONG); + return MOD_CONT; } if (nc->pass) @@ -261,7 +258,7 @@ int do_saset_password(User * u, NickCore * nc, char *param) if(enc_decrypt(nc->pass,tmp_pass,PASSMAX)==1) { notice_lang(s_NickServ, u, NICK_SASET_PASSWORD_CHANGED_TO, nc->display, - nc->pass); + tmp_pass); } else { notice_lang(s_NickServ, u, NICK_SASET_PASSWORD_CHANGED, nc->display); } diff --git a/src/core/ns_set.c b/src/core/ns_set.c index 54f381dd1..00c712e34 100644 --- a/src/core/ns_set.c +++ b/src/core/ns_set.c @@ -208,12 +208,9 @@ int do_set_password(User * u, NickCore * nc, char *param) if (stricmp(nc->display, param) == 0 || (StrictPasswords && len < 5)) { notice_lang(s_NickServ, u, MORE_OBSCURE_PASSWORD); return MOD_CONT; - } - - if (len > PASSMAX) { - len = PASSMAX; - param[len] = 0; - notice_lang(s_NickServ, u, PASSWORD_TRUNCATED, PASSMAX); + } else if (enc_encrypt_check_len(len ,PASSMAX)) { + notice_lang(s_NickServ, u, PASSWORD_TOO_LONG); + return MOD_CONT; } if (nc->pass) @@ -232,7 +229,7 @@ int do_set_password(User * u, NickCore * nc, char *param) memset(param, 0, len); if(enc_decrypt(nc->pass,tmp_pass,PASSMAX)==1) { - notice_lang(s_NickServ, u, NICK_SET_PASSWORD_CHANGED_TO, nc->pass); + notice_lang(s_NickServ, u, NICK_SET_PASSWORD_CHANGED_TO, tmp_pass); } else { notice_lang(s_NickServ, u, NICK_SET_PASSWORD_CHANGED); } |