Ignore:
Timestamp:
Oct 29, 2008, 8:59:18 PM (16 years ago)
Author:
katerina
Message:

Bugfixes for log monitoring, samba logfile parser.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_log_evalrule.c

    r183 r185  
    170170  ng->rule_extra  = group_extra;
    171171  ng->ovector     = NULL;
     172  ng->ovecnum     = 0;
    172173  ng->captures    = 0;
    173174  ng->counterlist = NULL;
    174175  ng->queue       = NULL;
    175176  ng->nextrule    = NULL;
    176 
    177   /*
    178    * Insert at end, to keep user-defined order
    179    */
    180   ng->next   = NULL;
    181   if (grouplist)
    182     {
    183       tmp = grouplist;
    184       while (tmp->next != NULL) { tmp = tmp->next; }
    185       tmp->next = ng;
    186     } else {
    187       grouplist = ng;
    188     }
     177  ng->next        = NULL;
    189178
    190179  if (!host_open)
     
    202191
    203192  /*
    204    * If there is an open host group, add it to its
    205    * rulegroups
    206    */
     193   * Insert at end, to keep user-defined order
     194   */
     195
    207196  if (host_open)
    208197    {
     198      if (grouplist)
     199        {
     200          tmp = grouplist;
     201          while (tmp->next != NULL) { tmp = tmp->next; }
     202          tmp->next = ng;
     203        } else {
     204          grouplist = ng;
     205        }
     206
     207
     208      /*
     209       * If there is an open host group, add it to its
     210       * rulegroups
     211       */
     212
    209213      if (host_open->rulegroups)
    210214        {
     
    214218        } else {
    215219          host_open->rulegroups = ng;
    216         }
     220        }
    217221    }
    218222
     
    427431  nr->captures    = captures;
    428432  nr->ovector     = SH_ALLOC(sizeof(int) * (captures+1) * 3);
     433  nr->ovecnum     = 0;
    429434  nr->counterlist = NULL;
    430435  nr->queue       = queue;
     
    441446        {
    442447          tmp = group_open->nextrule;
    443           while (tmp->next != NULL) { tmp = tmp->next; }
    444           tmp->next = nr;
     448          while (tmp->nextrule != NULL) { tmp = tmp->nextrule; } /* next -> nextrule */
     449          tmp->nextrule = nr;                                    /* next -> nextrule */
    445450        } else {
    446451          group_open->nextrule = nr;
     
    454459  else
    455460    {
    456       /*
    457        * Add rule as member to grouplist, to facilitate cleanup
    458        */
    459       if (grouplist)
    460         {
    461           tmp = grouplist;
    462           while (tmp->next != NULL) { tmp = tmp->next; }
    463           tmp->next = nr;
    464         } else {
    465           grouplist = nr;
    466         }
    467 
    468461      if (!host_open)
    469462        {
    470463          if (0 != sh_eval_hadd("^.*"))
    471464            {
     465              SH_FREE(nr->ovector);
    472466              SH_FREE(nr);
    473467              return -1;
     
    475469        }
    476470
    477       /*
    478        * Add rule to host rulegroups
    479        */
    480471      if (host_open)
    481472        {
     473          /*
     474           * Add rule as member to grouplist, to facilitate cleanup
     475           */
     476#if 0
     477          if (grouplist)
     478            {
     479              tmp = grouplist;
     480              while (tmp->next != NULL) { tmp = tmp->next; }
     481              tmp->next = nr;
     482            } else {
     483              grouplist = nr;
     484            }
     485#endif
     486
     487          /*
     488           * Add rule to host rulegroups
     489           */
    482490          if (host_open->rulegroups)
    483491            {
     
    488496              while (tmp->nextrule != NULL) { tmp = tmp->nextrule; }
    489497              tmp->nextrule = nr;
    490             } else {
     498            }
     499          else
     500            {
    491501              /* First rule goes to host_open->rulegroups */
    492502              host_open->rulegroups = nr;
     
    495505      else
    496506        {
     507          SH_FREE(nr->ovector);
    497508          SH_FREE(nr);
    498509          return -1;
     
    505516void sh_eval_cleanup()
    506517{
    507   struct sh_geval * nr;
    508518  struct sh_geval * tmp;
    509519
     
    512522  struct sh_heval * htmp;
    513523
    514   gtmp = grouplist;
    515   while (gtmp)
    516     {
     524  while (grouplist)
     525    {
     526      gtmp      = grouplist;
     527      grouplist = gtmp->next;
     528
    517529      if (gtmp->label)      sh_string_destroy(&(gtmp->label));
    518530      if (gtmp->rule_extra) (*pcre_free)(gtmp->rule_extra);
     
    522534      if (gtmp->ovector)
    523535        SH_FREE(gtmp->ovector);
    524       if (gtmp->nextrule)
    525         {
    526           tmp = gtmp->nextrule;
    527           do {
    528             nr  = tmp->nextrule;
    529             if (tmp->rule_extra) (*pcre_free)(tmp->rule_extra);
    530             if (tmp->rule)       (*pcre_free)(tmp->rule);
    531             if (tmp->counterlist)
    532               zAVLFreeTree(tmp->counterlist, sh_ceval_free);
    533             if (tmp->ovector)
    534               SH_FREE(tmp->ovector);
    535             SH_FREE(tmp);
    536             tmp = nr;
    537           } while (tmp);
    538         }
    539       grouplist = gtmp->next;
     536
     537      while (gtmp->nextrule)
     538        {
     539          tmp            = gtmp->nextrule;
     540          gtmp->nextrule = tmp->nextrule;
     541
     542          if (tmp->rule_extra) (*pcre_free)(tmp->rule_extra);
     543          if (tmp->rule)       (*pcre_free)(tmp->rule);
     544          if (tmp->counterlist)
     545            zAVLFreeTree(tmp->counterlist, sh_ceval_free);
     546          if (tmp->ovector)
     547            SH_FREE(tmp->ovector);
     548          SH_FREE(tmp);
     549        }
     550
    540551      SH_FREE(gtmp);
    541       gtmp = grouplist;
    542552    }
    543553
     
    678688  SH_MUTEX_LOCK(mutex_thread_nolog);
    679689  tmp = sh_util_safe_name (record->filename);
    680   msg = sh_util_safe_name (sh_string_str(record->message));
    681   ttt = sh_util_safe_name (sh_string_str(record->timestr));
     690  msg = sh_util_safe_name_keepspace (sh_string_str(record->message));
     691  ttt = sh_util_safe_name_keepspace (sh_string_str(record->timestr));
    682692  sh_error_handle (severity, FIL__, __LINE__, 0, MSG_LOGMON_REP,
    683693                   msg,
     
    697707  SH_MUTEX_LOCK(mutex_thread_nolog);
    698708  tmp = sh_util_safe_name (sh_string_str(path));
    699   msg = sh_util_safe_name (sh_string_str(message));
     709  msg = sh_util_safe_name_keepspace (sh_string_str(message));
    700710  sh_error_handle (severity, FIL__, __LINE__, 0, MSG_LOGMON_SUM,
    701711                   msg,
Note: See TracChangeset for help on using the changeset viewer.