Fix msg_tree_parse() to not confuse 0 (the digit) with P (the letter).
authorMichael Poole <mdpoole@troilus.org>
Fri, 10 Sep 2004 14:50:39 +0000 (14:50 +0000)
committerMichael Poole <mdpoole@troilus.org>
Fri, 10 Sep 2004 14:50:39 +0000 (14:50 +0000)
git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1106 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/parse.c

index fc2fd9641446c67f91df297a6ba854aab3055aa0..46417167c00d3a0d6938308fe9cebacb152ac29a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-10  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/parse.c (msg_tree_parse): Reject commands that contain
+       non-alphanumeric characters.
+
 2004-09-09  Michael Poole <mdpoole@troilus.org>
 
        * config.h.in: Remove duplicated and unused macro definitions.
index d2343d72b3a271a44fe251ec03c1a81d5a844f78..7288752f92eedbf80a31e6154e1236be2495b93f 100644 (file)
@@ -731,12 +731,11 @@ msg_tree_parse(char *cmd, struct MessageTree *root)
 {
   struct MessageTree *mtree;
 
-  for (mtree = root->pointers[(*cmd++) & (MAXPTRLEN-1)];
-           mtree != NULL;
-               mtree = mtree->pointers[(*cmd++) & (MAXPTRLEN-1)])
-  {
-    if ((mtree->msg != NULL) && (*cmd == '\0'))
-      return mtree->msg;
+  for (mtree = root; mtree; mtree = mtree->pointers[(*cmd++) & (MAXPTRLEN-1)]) {
+      if (*cmd == '\0' && mtree->msg)
+          return mtree->msg;
+      else if (!IsAlpha(*cmd))
+          return NULL;
   }
   return NULL;
 }