]> jfr.im git - solanum.git/blobdiff - modules/m_services.c
hook_fn casts were hiding UB (#265)
[solanum.git] / modules / m_services.c
index 143c8cb8716cfd4ba9b11c2babeebba72470db4b..63a534800587f5895dcb417df4e423c87806d9a6 100644 (file)
@@ -59,9 +59,9 @@ static void me_login(struct MsgBuf *, struct Client *, struct Client *, int, con
 static void me_rsfnc(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
 static void me_nickdelay(struct MsgBuf *, struct Client *, struct Client *, int, const char **);
 
-static void h_svc_server_introduced(hook_data_client *);
-static void h_svc_whois(hook_data_client *);
-static void h_svc_stats(hook_data_int *);
+static void h_svc_server_introduced(void *);
+static void h_svc_whois(void *);
+static void h_svc_stats(void *);
 static void h_svc_conf_read_start(void *);
 static void h_svc_conf_read_end(void *);
 
@@ -86,12 +86,12 @@ mapi_clist_av1 services_clist[] = {
        &su_msgtab, &login_msgtab, &rsfnc_msgtab, &nickdelay_msgtab, NULL
 };
 mapi_hfn_list_av1 services_hfnlist[] = {
-       { "doing_stats",        (hookfn) h_svc_stats },
-       { "doing_whois",        (hookfn) h_svc_whois },
-       { "doing_whois_global", (hookfn) h_svc_whois },
-       { "server_introduced",  (hookfn) h_svc_server_introduced },
-       { "conf_read_start", (hookfn) h_svc_conf_read_start },
-       { "conf_read_end", (hookfn) h_svc_conf_read_end },
+       { "doing_stats",        h_svc_stats },
+       { "doing_whois",        h_svc_whois },
+       { "doing_whois_global", h_svc_whois },
+       { "server_introduced",  h_svc_server_introduced },
+       { "conf_read_start", h_svc_conf_read_start },
+       { "conf_read_end", h_svc_conf_read_end },
        { NULL, NULL }
 };
 
@@ -300,8 +300,9 @@ me_nickdelay(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *so
 }
 
 static void
-h_svc_server_introduced(hook_data_client *hdata)
+h_svc_server_introduced(void *data)
 {
+       hook_data_client *hdata = data;
        rb_dlink_node *ptr;
 
        RB_DLINK_FOREACH(ptr, service_list.head)
@@ -315,8 +316,9 @@ h_svc_server_introduced(hook_data_client *hdata)
 }
 
 static void
-h_svc_whois(hook_data_client *data)
+h_svc_whois(void *data_)
 {
+       hook_data_client *data = data_;
        char *p = data->target->user->suser;
        if(!EmptyString(p))
        {
@@ -336,8 +338,9 @@ h_svc_whois(hook_data_client *data)
 }
 
 static void
-h_svc_stats(hook_data_int *data)
+h_svc_stats(void *data_)
 {
+       hook_data_int *data = data_;
        char statchar = (char) data->arg2;
        rb_dlink_node *ptr;