Fix bug in PASS handling.
authorMichael Poole <mdpoole@troilus.org>
Sat, 17 Jun 2006 13:09:14 +0000 (13:09 +0000)
committerMichael Poole <mdpoole@troilus.org>
Sat, 17 Jun 2006 13:09:14 +0000 (13:09 +0000)
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/branches/u2_10_12_branch@1668 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/m_pass.c

index 7fe342c376c828ebcdf9a9e34ad24e50364eda5d..6b54d660d8c5bb9ca0f1cf00038f9d8d0f5b9d9c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2006-06-17  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/m_pass.c (mr_pass): Only back 'len' up when it's safe.
+
 2006-06-08  Michael Poole <mdpoole@troilus.org>
 
        * ircd/m_whois.c (do_whois): Prefix '*' to names of secret (local)
index b1aef623d5db41aacc70cbf26b7f965e8187fb56..eb08e9f6b6a22a36b0e77947e56721480de1692e 100644 (file)
@@ -112,7 +112,9 @@ int mr_pass(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
     len += strlen(parv[arg]);
     password[len++] = ' ';
   }
-  password[--len] = '\0';
+  if (len > 0)
+    --len;
+  password[len] = '\0';
 
   if (EmptyString(password))
     return need_more_params(cptr, "PASS");