]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-oper.c
Fix permanent k/gline
[ngircd-alex.git] / src / ngircd / irc-oper.c
index 0b50bca659e40c3f89ed217c00d0ccf1de060be1..49768bc7e8f2b7974b0dd9c0048155bfdf7432c5 100644 (file)
@@ -50,6 +50,7 @@ Bad_OperPass(CLIENT *Client, char *errtoken, char *errmsg)
 {
        Log(LOG_WARNING, "Got invalid OPER from \"%s\": \"%s\" -- %s",
            Client_Mask(Client), errtoken, errmsg);
+       /* Increase penalty to slow down possible brute force attacks */
        IRC_SetPenalty(Client, 10);
        return IRC_WriteStrClient(Client, ERR_PASSWDMISMATCH_MSG,
                                  Client_ID(Client));
@@ -386,6 +387,7 @@ IRC_xLINE(CLIENT *Client, REQUEST *Req)
        CLIENT *from, *c, *c_next;
        char reason[COMMAND_LEN], class_c;
        struct list_head *list;
+       time_t timeout;
        int class;
 
        assert(Client != NULL);
@@ -430,8 +432,11 @@ IRC_xLINE(CLIENT *Client, REQUEST *Req)
                }
        } else {
                /* Add new mask to list */
+               timeout = atol(Req->argv[1]);
+               if (timeout > 0)
+                       timeout += time(NULL);
                if (Class_AddMask(class, Req->argv[0],
-                                 time(NULL) + atol(Req->argv[1]),
+                                 timeout,
                                  Req->argv[2])) {
                        Log(LOG_NOTICE|LOG_snotice,
                            "\"%s\" added \"%s\" to %c-Line list: \"%s\" (%ld seconds).",