]> jfr.im git - irc/quakenet/newserv.git/commitdiff
Fix two memory leaks in chanlev.
authorChris Porter <redacted>
Thu, 13 Nov 2008 22:13:39 +0000 (22:13 +0000)
committerChris Porter <redacted>
Thu, 13 Nov 2008 22:13:39 +0000 (22:13 +0000)
chanserv/chancmds/chanlev.c

index 5e237f5629b06b8a4ff0c4472246e8bbd2fdf34d..a3524913907a055ea81fe50fe711c067b46f2597 100644 (file)
@@ -316,6 +316,8 @@ int csc_dochanlev(void *source, int cargc, char **cargv) {
       oldflags=rcuplist->flags;
       if (setflags(&(rcuplist->flags), changemask, cargv[2], rcuflags, REJECT_UNKNOWN | REJECT_DISALLOWED)) {
        chanservstdmessage(sender, QM_INVALIDCHANLEVCHANGE);
+        if (newuser)
+          freeregchanuser(rcuplist);
        return CMD_ERROR;
       }
 
@@ -323,6 +325,8 @@ int csc_dochanlev(void *source, int cargc, char **cargv) {
       if (!cs_privcheck(QPRIV_CHANGECHANLEV, sender) && !(oldflags & QCUFLAG_OWNER) && (rcuplist->flags & QCUFLAG_OWNER)) {
         rcuplist->flags=oldflags;
        chanservstdmessage(sender, QM_USEGIVEOWNER);
+        if (newuser)
+          freeregchanuser(rcuplist);
        return CMD_ERROR;
       }
 
@@ -335,10 +339,8 @@ int csc_dochanlev(void *source, int cargc, char **cargv) {
 
       if(rcuplist->flags == oldflags) {
         chanservstdmessage(sender, QM_CHANLEVNOCHANGE);
-        if (newuser) {
+        if (newuser)
           freeregchanuser(rcuplist);
-          rcuplist=NULL;
-        }
         return CMD_OK;
       }