]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/opserv.c
fixing giveownership logs access to invalid memory address after free
[irc/evilnet/x3.git] / src / opserv.c
index f6b701491827a8e00a73be784d4216a89109be6c..b699874134c6b02501d80ac9f11f608b828f0c13 100644 (file)
@@ -45,7 +45,6 @@
 #include <arpa/inet.h>
 #endif
 
-
 #define OPSERV_CONF_NAME "services/opserv"
 
 #define KEY_ALERT_CHANNEL "alert_channel"
@@ -1400,8 +1399,10 @@ opserv_svsjoin(struct userNode *target, UNUSED_ARG(char *src_handle), UNUSED_ARG
             return; /* channel is invite only */
         }
 
-        if (channel->members.used >= channel->limit) {
-            return; /* channel is invite on */
+        if (channel->limit > 0) {
+            if (channel->members.used >= channel->limit) {
+                return; /* channel is invite on */
+            }
         }
 
         if (*channel->key) {
@@ -2407,7 +2408,7 @@ static MODCMD_FUNC(cmd_stats_alerts) {
     reply("OSMSG_ALERTS_BAR");
     for (it = dict_first(opserv_user_alerts); it; it = iter_next(it)) {
         alert = iter_data(it);
-        if(m && (!match_ircglob(alert->text_discrim, m) && strcasecmp(alert->owner, m))
+        if(m && (!match_ircglob(alert->text_discrim, m) && strcasecmp(alert->owner, m) && strcasecmp(iter_key(it), m)))
              continue; /* not a match to requested filter */
         switch (alert->reaction) {
         case REACT_NOTICE: reaction = "notice"; break;
@@ -5741,8 +5742,10 @@ trace_svsjoin_func(struct userNode *match, void *extra)
             return 1; /* channel is invite only */
         }
 
-        if (channel->members.used >= channel->limit) {
-            return 1; /* channel is invite on */
+        if (channel->limit > 0) {
+            if (channel->members.used >= channel->limit) {
+                return 1; /* channel is invite on */
+            }
         }
 
         if (*channel->key) {