summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/cs_getpass.c10
-rw-r--r--src/core/cs_register.c19
-rw-r--r--src/core/cs_set.c7
-rw-r--r--src/core/enc_none.c3
-rw-r--r--src/core/ns_getpass.c8
-rw-r--r--src/core/ns_register.c6
-rw-r--r--src/core/ns_saset.c11
-rw-r--r--src/core/ns_set.c11
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);
}