]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/s_newconf.c
[svn] Fix a memory leak.
[irc/rqf/shadowircd.git] / src / s_newconf.c
index 97cd4751dc4d7a9cbebaa49d1d259b8f25f96319..4b5e1e087bf0df46067b82eb991338dffdeaa1b9 100644 (file)
@@ -29,7 +29,7 @@
  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $Id: s_newconf.c 1747 2006-07-25 21:22:45Z jilles $
+ * $Id: s_newconf.c 3508 2007-06-04 16:04:49Z jilles $
  */
 
 #include "stdinc.h"
@@ -504,8 +504,7 @@ set_server_conf_autoconn(struct Client *source_p, char *name, int newval)
                                get_oper_name(source_p), name, newval);
        }
        else
-               sendto_one(source_p, ":%s NOTICE %s :Can't find %s",
-                               me.name, source_p->name, name);
+               sendto_one_notice(source_p, ":Can't find %s", name);
 }
 
 struct ConfItem *
@@ -596,6 +595,7 @@ valid_wild_card_simple(const char *data)
        const char *p;
        char tmpch;
        int nonwild = 0;
+       int wild = 0;
 
        /* check the string for minimum number of nonwildcard chars */
        p = data;
@@ -605,9 +605,11 @@ valid_wild_card_simple(const char *data)
                /* found an escape, p points to the char after it, so skip
                 * that and move on.
                 */
-               if(tmpch == '\\')
+               if(tmpch == '\\' && *p)
                {
                        p++;
+                       if(++nonwild >= ConfigFileEntry.min_nonwildcard_simple)
+                               return 1;
                }
                else if(!IsMWildChar(tmpch))
                {
@@ -615,9 +617,12 @@ valid_wild_card_simple(const char *data)
                        if(++nonwild >= ConfigFileEntry.min_nonwildcard_simple)
                                return 1;
                }
+               else
+                       wild++;
        }
 
-       return 0;
+       /* strings without wilds are also ok */
+       return wild == 0;
 }
 
 time_t