/[LeafOK_CVS]/lbbs/src/bwf.c
ViewVC logotype

Diff of /lbbs/src/bwf.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.6 by sysadm, Fri Nov 21 10:34:10 2025 UTC Revision 1.9 by sysadm, Sat Jan 3 10:27:14 2026 UTC
# Line 3  Line 3 
3   * bwf   * bwf
4   *   - bad words filter   *   - bad words filter
5   *   *
6   * Copyright (C) 2004-2025  Leaflet <leaflet@leafok.com>   * Copyright (C) 2004-2026  Leaflet <leaflet@leafok.com>
7   */   */
8    
9  #ifdef HAVE_CONFIG_H  #ifdef HAVE_CONFIG_H
# Line 38  int bwf_load(const char *filename) Line 38  int bwf_load(const char *filename)
38    
39          if (filename == NULL)          if (filename == NULL)
40          {          {
41                  log_error("NULL pointer error\n");                  log_error("NULL pointer error");
42                  return -1;                  return -1;
43          }          }
44    
45          if ((fp = fopen(filename, "r")) == NULL)          if ((fp = fopen(filename, "r")) == NULL)
46          {          {
47                  log_error("fopen(%s) error: %d\n", filename, errno);                  log_error("fopen(%s) error: %d", filename, errno);
48                  return -2;                  return -2;
49          }          }
50    
# Line 53  int bwf_load(const char *filename) Line 53  int bwf_load(const char *filename)
53                  len_line = strnlen(line, sizeof(line) - 1);                  len_line = strnlen(line, sizeof(line) - 1);
54                  if (!feof(fp) && line[len_line - 1] != '\n')                  if (!feof(fp) && line[len_line - 1] != '\n')
55                  {                  {
56                          log_error("Data line %d (len=%d) is truncated\n", line_id, len_line);                          log_error("Data line %d (len=%d) is truncated", line_id, len_line);
57                          bwf_pattern_str[0] = '\0';                          bwf_pattern_str[0] = '\0';
58                          return -3;                          return -3;
59                  }                  }
# Line 76  int bwf_load(const char *filename) Line 76  int bwf_load(const char *filename)
76    
77                  if (len_line + 2 > sizeof(bwf_pattern_str) - 1 - (size_t)(p - bwf_pattern_str))                  if (len_line + 2 > sizeof(bwf_pattern_str) - 1 - (size_t)(p - bwf_pattern_str))
78                  {                  {
79                          log_error("Data in %s exceed length limit %d\n", filename, sizeof(bwf_pattern_str) - 1);                          log_error("Data in %s exceed length limit %d", filename, sizeof(bwf_pattern_str) - 1);
80                          bwf_pattern_str[0] = '\0';                          bwf_pattern_str[0] = '\0';
81                          return -3;                          return -3;
82                  }                  }
# Line 91  int bwf_load(const char *filename) Line 91  int bwf_load(const char *filename)
91    
92          fclose(fp);          fclose(fp);
93    
94  #ifdef _DEBUG          log_debug("Debug: bwf_pattern_str: %s", bwf_pattern_str);
         log_error("Debug: bwf_pattern_str: %s\n", bwf_pattern_str);  
 #endif  
95    
96          return 0;          return 0;
97  }  }
# Line 136  int check_badwords(char *str, char c_mas Line 134  int check_badwords(char *str, char c_mas
134    
135          if (bwf_code == NULL)          if (bwf_code == NULL)
136          {          {
137                  log_error("BWF not loaded\n");                  log_error("BWF not loaded");
138                  return -1;                  return -1;
139          }          }
140    
# Line 152  int check_badwords(char *str, char c_mas Line 150  int check_badwords(char *str, char c_mas
150                  }                  }
151                  else if (ret < 0)                  else if (ret < 0)
152                  {                  {
153                          log_error("pcre2_match() error: %d\n", ret);                          log_error("pcre2_match() error: %d", ret);
154                  }                  }
155                  else if (ret == 0)                  else if (ret == 0)
156                  {                  {
157                          log_error("Vector of offsets is too small\n");                          log_error("Vector of offsets is too small");
158                  }                  }
159                  else // ret >= 1                  else // ret >= 1
160                  {                  {
# Line 172  int check_badwords(char *str, char c_mas Line 170  int check_badwords(char *str, char c_mas
170                          }                          }
171                          else                          else
172                          {                          {
173  #ifdef _DEBUG                                  log_debug("Debug: match pattern #%d of %d at offsets [%d, %d]",
                                 log_error("Debug: match pattern #%d of %d at offsets [%d, %d]\n",  
174                                                    i, match_count, ovector[i * 2], ovector[i * 2 + 1] - ovector[i * 2]);                                                    i, match_count, ovector[i * 2], ovector[i * 2 + 1] - ovector[i * 2]);
 #endif  
175                                  memset(str + ovector[i * 2], c_mask, ovector[i * 2 + 1] - ovector[i * 2]);                                  memset(str + ovector[i * 2], c_mask, ovector[i * 2 + 1] - ovector[i * 2]);
176                                  total_match_count++;                                  total_match_count++;
177                                  startoffset = ovector[i * 2 + 1];                                  startoffset = ovector[i * 2 + 1];


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1