ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.2.x/modules/m_accept.c
(Generate patch)

Comparing ircd-hybrid/branches/8.2.x/modules/m_accept.c (file contents):
Revision 8751 by michael, Tue Jan 1 11:06:50 2019 UTC vs.
Revision 9833 by michael, Fri Dec 25 10:09:43 2020 UTC

# Line 1 | Line 1
1   /*
2   *  ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3   *
4 < *  Copyright (c) 2000-2019 ircd-hybrid development team
4 > *  Copyright (c) 2000-2020 ircd-hybrid development team
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 45 | Line 45
45   static void
46   list_accepts(struct Client *source_p)
47   {
48 <  char nicks[IRCD_BUFSIZE] = "";
49 <  char *t = nicks;
48 >  char buf[IRCD_BUFSIZE];
49 >  char *bufptr = buf;
50    dlink_node *node;
51  
52    /* :me.name 281 source_p->name :n1!u1@h1 n2!u2@h2 ...\r\n */
53    /* 1       23456              78                     9 10 */
54 <  int len = strlen(me.name) + strlen(source_p->name) + 10;
54 >  size_t len = strlen(me.name) + strlen(source_p->name) + 10;
55  
56    DLINK_FOREACH(node, source_p->connection->acceptlist.head)
57    {
# Line 60 | Line 60 | list_accepts(struct Client *source_p)
60                       strlen(accept_p->userptr) +
61                       strlen(accept_p->hostptr) + 3;  /* +3 for ! + @ + space */
62  
63 <    if ((t - nicks) + masklen + len > IRCD_BUFSIZE)
63 >    if ((bufptr - buf) + masklen + len > sizeof(buf))
64      {
65 <      *(t - 1) = '\0';
66 <      sendto_one_numeric(source_p, &me, RPL_ACCEPTLIST, nicks);
67 <      t = nicks;
65 >      *(bufptr - 1) = '\0';
66 >      sendto_one_numeric(source_p, &me, RPL_ACCEPTLIST, buf);
67 >      bufptr = buf;
68      }
69  
70 <    t += sprintf(t, "%s!%s@%s ",
71 <                 accept_p->nickptr,
72 <                 accept_p->userptr, accept_p->hostptr);
70 >    bufptr += snprintf(bufptr, sizeof(buf) - (bufptr - buf), "%s!%s@%s ",
71 >                       accept_p->nickptr,
72 >                       accept_p->userptr,
73 >                       accept_p->hostptr);
74    }
75  
76 <  if (nicks[0])
76 >  if (bufptr != buf)
77    {
78 <    *(t - 1) = '\0';
79 <    sendto_one_numeric(source_p, &me, RPL_ACCEPTLIST, nicks);
78 >    *(bufptr - 1) = '\0';
79 >    sendto_one_numeric(source_p, &me, RPL_ACCEPTLIST, buf);
80    }
81  
82    sendto_one_numeric(source_p, &me, RPL_ENDOFACCEPT);
# Line 112 | Line 113 | add_accept(const struct split_nuh_item *
113   *      - parv[0] = command
114   *      - parv[1] = comma-separated list of masks to be accepted or removed
115   */
116 < static int
116 > static void
117   m_accept(struct Client *source_p, int parc, char *parv[])
118   {
119    struct split_nuh_item nuh;
120    struct split_nuh_item *accept_p = NULL;
121 <  char nick[NICKLEN + 1] = "";
122 <  char user[USERLEN + 1] = "";
123 <  char host[HOSTLEN + 1] = "";
121 >  char nick[NICKLEN + 1];
122 >  char user[USERLEN + 1];
123 >  char host[HOSTLEN + 1];
124    char *p = NULL;
125    char *mask = collapse(parv[1]);
126  
127    if (EmptyString(mask) || strcmp(mask, "*") == 0)
128    {
129      list_accepts(source_p);
130 <    return 0;
130 >    return;
131    }
132  
133    for (mask = strtok_r(mask, ",", &p); mask;
# Line 158 | Line 159 | m_accept(struct Client *source_p, int pa
159        if (dlink_list_length(&source_p->connection->acceptlist) >= ConfigGeneral.max_accept)
160        {
161          sendto_one_numeric(source_p, &me, ERR_ACCEPTFULL);
162 <        return 0;
162 >        return;
163        }
164  
165        nuh.nuhmask  = mask;
# Line 181 | Line 182 | m_accept(struct Client *source_p, int pa
182        add_accept(&nuh, source_p);
183      }
184    }
184
185  return 0;
185   }
186  
187   static struct Message accept_msgtab =
188   {
189    .cmd = "ACCEPT",
190 <  .args_max = MAXPARA,
191 <  .handlers[UNREGISTERED_HANDLER] = m_unregistered,
192 <  .handlers[CLIENT_HANDLER] = m_accept,
193 <  .handlers[SERVER_HANDLER] = m_ignore,
194 <  .handlers[ENCAP_HANDLER] = m_ignore,
196 <  .handlers[OPER_HANDLER] = m_accept
190 >  .handlers[UNREGISTERED_HANDLER] = { .handler = m_unregistered },
191 >  .handlers[CLIENT_HANDLER] = { .handler = m_accept },
192 >  .handlers[SERVER_HANDLER] = { .handler = m_ignore },
193 >  .handlers[ENCAP_HANDLER] = { .handler = m_ignore },
194 >  .handlers[OPER_HANDLER] = { .handler = m_accept }
195   };
196  
197   static void

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)