offchannel fixes; more memory verification
[srvx.git] / src / proto-p10.c
index 4e49b6465bd38e7d72940d364a04164d34a3253f..f602a98a958cc99c9c6ee4b4a77ff1a7b6de2209 100644 (file)
@@ -1943,6 +1943,8 @@ DelUser(struct userNode* user, struct userNode *killer, int announce, const char
 {
     unsigned int n;
 
+    verify(user);
+
     /* mark them as dead, in case anybody cares */
     user->dead = 1;
 
@@ -2083,7 +2085,14 @@ mod_chanmode_parse(struct chanNode *channel, char **modes, unsigned int argc, un
         case 'r': do_chan_mode(MODE_REGONLY); break;
         case 's': do_chan_mode(MODE_SECRET); break;
         case 't': do_chan_mode(MODE_TOPICLIMIT); break;
-        case 'z': do_chan_mode(MODE_REGISTERED); break;
+       case 'z':
+         if (!(flags & MCP_REGISTERED)) {
+          do_chan_mode(MODE_REGISTERED);
+         } else {
+          mod_chanmode_free(change);
+          return NULL;
+         }
+         break;
 #undef do_chan_mode
         case 'l':
             if (add) {