void free_regex(Regex regex) { Regex temp = regex; while (*temp != NULL) { if((*temp)->type == parenthesis) { free_regex((*temp)->optionA); free_regex((*temp)->optionB); } free(*temp); temp++; } free(regex); }
void filter_dispose(filter_t *filter) { free(filter->raw); filter->raw = NULL; free_regex(filter); }
void phishing_done(struct cl_engine* engine) { struct phishcheck* pchk = engine->phishcheck; cli_dbgmsg("Cleaning up phishcheck\n"); if(pchk && !pchk->is_disabled) { free_regex(&pchk->preg_numeric); } whitelist_done(engine); domainlist_done(engine); if(pchk) { cli_dbgmsg("Freeing phishcheck struct\n"); mpool_free(engine->mempool, pchk); } cli_dbgmsg("Phishcheck cleaned up\n"); }
void phishing_done(struct cl_engine* engine) { struct phishcheck* pchk = engine->phishcheck; cli_dbgmsg("Cleaning up phishcheck\n"); if(pchk && !pchk->is_disabled) { free_regex(&pchk->preg); free_regex(&pchk->preg_hexurl); free_regex(&pchk->preg_cctld); free_regex(&pchk->preg_tld); free_regex(&pchk->preg_numeric); free_regex(&pchk->preg_realurl); pchk->is_disabled = 1; } whitelist_done(engine); domainlist_done(engine); if(pchk) { cli_dbgmsg("Freeing phishcheck struct\n"); free(pchk); engine->phishcheck = NULL; } cli_dbgmsg("Phishcheck cleaned up\n"); }
void filter_clear(filter_t *filter) { filter->raw[0] = '\0'; free_regex(filter); }
/* Replaces possibly existing regular expression with the new one. */ static void reset_regex(filter_t *filter, const char value[]) { free_regex(filter); compile_regex(filter, value); }
int phishing_init(struct cl_engine* engine) { char *url_regex, *realurl_regex; struct phishcheck* pchk; if(!engine->phishcheck) { pchk = engine->phishcheck = cli_malloc(sizeof(struct phishcheck)); if(!pchk) return CL_EMEM; pchk->is_disabled = 1; } else { pchk = engine->phishcheck; if(!pchk) return CL_ENULLARG; if(!pchk->is_disabled) { /* already initialized */ return CL_SUCCESS; } } cli_dbgmsg("Initializing phishcheck module\n"); if(build_regex(&pchk->preg_hexurl,cloaked_host_regex,1)) { free(pchk); engine->phishcheck = NULL; return CL_EFORMAT; } if(build_regex(&pchk->preg_cctld,cctld_regex,1)) { free(pchk); engine->phishcheck = NULL; return CL_EFORMAT; } if(build_regex(&pchk->preg_tld,tld_regex,1)) { free_regex(&pchk->preg_cctld); free(pchk); engine->phishcheck = NULL; return CL_EFORMAT; } url_regex = str_compose("^ *(("URI_CHECK_PROTOCOLS")|("URI_fragmentaddress1,URI_fragmentaddress2,URI_fragmentaddress3")) *$"); if(build_regex(&pchk->preg,url_regex,1)) { free_regex(&pchk->preg_cctld); free_regex(&pchk->preg_tld); free(url_regex); free(pchk); engine->phishcheck = NULL; return CL_EFORMAT; } free(url_regex); realurl_regex = str_compose("^ *(("URI_CHECK_PROTOCOLS")|("URI_path1,URI_fragmentaddress2,URI_fragmentaddress3")) *$"); if(build_regex(&pchk->preg_realurl, realurl_regex,1)) { free_regex(&pchk->preg_cctld); free_regex(&pchk->preg_tld); free_regex(&pchk->preg); free(url_regex); free(realurl_regex); free(pchk); engine->phishcheck = NULL; return CL_EFORMAT; } free(realurl_regex); if(build_regex(&pchk->preg_numeric,numeric_url_regex,1)) { free_regex(&pchk->preg_cctld); free_regex(&pchk->preg_tld); free_regex(&pchk->preg); free_regex(&pchk->preg_realurl); free(pchk); engine->phishcheck = NULL; return CL_EFORMAT; } pchk->is_disabled = 0; cli_dbgmsg("Phishcheck module initialized\n"); return CL_SUCCESS; }