Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_unix.c

    r30 r20  
    127127unsigned long mask_USER0        = MASK_USER_;
    128128unsigned long mask_USER1        = MASK_USER_;
    129 unsigned long mask_USER2        = MASK_USER_;
    130 unsigned long mask_USER3        = MASK_USER_;
    131 unsigned long mask_USER4        = MASK_USER_;
    132129unsigned long mask_ALLIGNORE    = MASK_ALLIGNORE_;
    133130unsigned long mask_ATTRIBUTES   = MASK_ATTRIBUTES_;
     
    145142  mask_USER0        = MASK_USER_;
    146143  mask_USER1        = MASK_USER_;
    147   mask_USER2        = MASK_USER_;
    148   mask_USER3        = MASK_USER_;
    149   mask_USER4        = MASK_USER_;
    150144  mask_ALLIGNORE    = MASK_ALLIGNORE_;
    151145  mask_ATTRIBUTES   = MASK_ATTRIBUTES_;
     
    313307    *p = '0' + (u % 10);
    314308    u /= 10;
    315   } while (u && (p != str));
    316   if ((iisneg == 1) && (p != str)) {
     309  } while (u);
     310  if (iisneg == 1) {
    317311    --p;
    318312    *p = '-';
     
    329323extern int OnlyStderr;
    330324
    331 int safe_logger (int signal, int method, char * details)
     325int safe_logger (int signal, int method, pid_t thepid)
    332326{
    333327  int i = 0;
     
    337331  char  str[128];
    338332  char  * p;
    339  
     333
    340334  char l0[64], l1[64], l2[64], l3[64];
    341335  char a0[32], a1[32], a2[32];
    342336  char e0[128];
    343337  char msg[128];
    344  
     338
    345339  char * locations[] = { NULL, NULL, NULL, NULL, NULL };
    346340  char * envp[]      = { NULL, NULL };
    347341  char * argp[]      = { NULL, NULL, NULL, NULL, NULL };
    348  
    349   pid_t  thepid = getpid();
    350  
     342
    351343  if ((sh.flag.isdaemon == S_FALSE) || (OnlyStderr == S_TRUE))
    352344    method = 1;
    353  
     345
    354346  /* seems that solaris cc needs this way of initializing ...
    355347   */
     
    358350  locations[2] = l2;
    359351  locations[3] = l3;
    360  
     352
    361353  envp[0] = e0;
    362  
     354
    363355  argp[0] = a0;
    364356  argp[1] = a1;
    365357  argp[2] = a2;
    366  
     358
     359  strcpy (l0, _("/usr/bin/logger"));                   /* known to fit  */
     360  strcpy (l1, _("/usr/sbin/logger"));                  /* known to fit  */
     361  strcpy (l2, _("/usr/ucb/logger"));                   /* known to fit  */
     362  strcpy (l3, _("/bin/logger"));                       /* known to fit  */
     363
     364  strcpy (a0, _("logger"));                            /* known to fit  */
     365  strcpy (a1, _("-p"));                                /* known to fit  */
     366  strcpy (a2, _("daemon.alert"));                      /* known to fit  */
     367
     368  strcpy (e0,                                          /* known to fit  */
     369          _("PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin"));
     370
    367371  sl_strlcpy(msg, _("samhain["), 128);
    368372  p = safe_itoa((int) thepid, str, 128);
     
    371375  if (signal == 0)
    372376    {
    373       if (details == NULL) {
    374         sl_strlcat(msg, _("]: out of memory"), 128);
    375       } else {
    376         sl_strlcat(msg, _("]: "), 128);
    377         sl_strlcat(msg, details, 128);
    378       }
     377      sl_strlcat(msg, _("]: out of memory"), 128);
    379378    }
    380379  else
     
    394393    return 0;
    395394  }
    396 
    397   sl_strlcpy (l0, _("/usr/bin/logger"), 64);
    398   sl_strlcpy (l1, _("/usr/sbin/logger"), 64);
    399   sl_strlcpy (l2, _("/usr/ucb/logger"), 64);
    400   sl_strlcpy (l3, _("/bin/logger"), 64);
    401 
    402   sl_strlcpy (a0, _("logger"), 32);
    403   sl_strlcpy (a1, _("-p"), 32);
    404   sl_strlcpy (a2, _("daemon.alert"), 32);
    405 
    406   sl_strlcpy (e0,
    407               _("PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin"),
    408               128);
    409 
    410395  while (locations[i] != NULL) {
    411396    status = stat(locations[i], &buf);
     
    429414}
    430415
    431 void safe_fatal (int signal, int method, char * details,
    432                 char * file, int line)
    433 {
    434   char msg[128];
    435   char str[128];
    436   char * p;
    437   p = safe_itoa((int) line, str, 128);
    438   sl_strlcpy(msg, _("FATAL: "), 128);
    439   sl_strlcat(msg, file, 128);
    440   sl_strlcat(msg, ": ", 128);
    441   if (p && (*p)) {
    442     sl_strlcat(msg, p   , 128);
    443     sl_strlcat(msg, ": ", 128);
    444   }
    445   sl_strlcat(msg, details, 128);
    446   safe_logger (signal, method, msg);
    447   _exit(EXIT_FAILURE);
    448 }
    449416
    450417extern char sh_sig_msg[64];
     
    484451        {
    485452          chdir ("/");
    486           safe_logger (mysignal, 0, NULL);
     453          safe_logger (mysignal, 0, getpid());
    487454        }
    488455      _exit(mysignal);
     
    537504    memset (skey, '\0', sizeof(sh_key_t));
    538505  if (immediate_exit_fast < 2)
    539     safe_logger (mysignal, 0, NULL);
     506    safe_logger (mysignal, 0, getpid());
    540507  _exit(mysignal);
    541508#else
     
    551518      close_ipc ();
    552519#endif
    553       safe_logger (mysignal, 0, NULL);
     520      safe_logger (mysignal, 0, getpid());
    554521      chdir ("/");
    555522      raise(SIGFPE);
     
    852819/* checksum the own binary
    853820 */
    854 int sh_unix_self_hash (const char * c)
     821int sh_unix_self_hash (char * c)
    855822{
    856823  char message[512];
     
    924891
    925892/* added    Tue Feb 22 10:36:44 NFT 2000 Rainer Wichmann            */
    926 static int tf_add_trusted_user_int(const char * c)
     893static int tf_add_trusted_user_int(char * c)
    927894{
    928895  register struct passwd *          w;
     
    952919}
    953920
    954 int tf_add_trusted_user(const char * c)
     921int tf_add_trusted_user(char * c)
    955922{
    956923  int    i;
     
    12621229  char ** env1;
    12631230  int   envlen = 0;
    1264   size_t len;
    12651231
    12661232  SL_ENTER(_("sh_unix_copyenv"));
     
    12821248  envlen = 0;
    12831249
    1284   while (env0 != NULL && env0[envlen] != NULL) {
    1285     len = strlen(env0[envlen]) + 1;
    1286     env1[envlen] = malloc (len); /* only once */
     1250  while (env0 != NULL && env0[envlen] != NULL) {
     1251    env1[envlen] = malloc (strlen(env0[envlen]) + 1); /* only once */
    12871252    if (env1[envlen] == NULL)
    12881253      {
     
    12901255        SL_RET0(_("sh_unix_copyenv"));
    12911256      }
    1292     sl_strlcpy(env1[envlen], env0[envlen], len);
     1257    strcpy(env1[envlen], env0[envlen]);                /* known to fit  */
    12931258    ++envlen;
    12941259  }
     
    14511416#include <arpa/inet.h>
    14521417
    1453 char * sh_unix_h_name (struct hostent * host_entry)
    1454 {
    1455         char ** p;
    1456         if (strchr(host_entry->h_name, '.')) {
    1457                 return host_entry->h_name;
    1458         } else {
    1459                 for (p = host_entry->h_aliases; *p; ++p) {
    1460                         if (strchr(*p, '.'))
    1461                                 return *p;
    1462                 }
    1463         }
    1464         return host_entry->h_name;
    1465 }
    1466 
    14671418/* uname() on FreeBSD is broken, because the 'nodename' buf is too small
    14681419 * to hold a valid (leftmost) domain label.
     
    14841435
    14851436  (void) uname (&buf);
    1486   /* flawfinder: ignore */ /* ff bug, ff sees system() */
     1437
    14871438  sl_strlcpy (sh.host.system,  buf.sysname, SH_MINIBUF);
    14881439  sl_strlcpy (sh.host.release, buf.release, SH_MINIBUF);
     
    15351486  else
    15361487    {
    1537       sl_strlcpy (sh.host.name, sh_unix_h_name(he1), SH_PATHBUF);
     1488      sl_strlcpy (sh.host.name, he1->h_name, SH_PATHBUF);
    15381489    }
    15391490 
     
    15831534  if (he1 != NULL)
    15841535    {
    1585       sl_strlcpy (sh.host.name, sh_unix_h_name(he1), SH_PATHBUF);
     1536      sl_strlcpy (sh.host.name, he1->h_name, SH_PATHBUF);
    15861537    }
    15871538  else
     
    16881639          aud_exit(FIL__, __LINE__, EXIT_FAILURE);
    16891640        }
    1690       /* flawfinder: ignore */
    16911641      return (chroot(chroot_dir));
    16921642    }
     
    19731923}
    19741924
    1975 int sh_unix_settimeserver (const char * address)
     1925int sh_unix_settimeserver (char * address)
    19761926{
    19771927
     
    21462096/* whether to use localtime for file timesatams in logs
    21472097 */
    2148 int sh_unix_uselocaltime (const char * c)
     2098int sh_unix_uselocaltime (char * c)
    21492099{
    21502100  int i;
     
    27822732}
    27832733
    2784 int sh_unix_set_io_limit (const char * c)
     2734int sh_unix_set_io_limit (char * c)
    27852735{
    27862736  long val;
     
    28222772  if (tmpFile.size < fbuf->st_size)
    28232773    {
    2824       sl_strlcpy(fileHash,
    2825                 sh_tiger_generic_hash (filename, TIGER_FD, tmpFile.size,
    2826                                        alert_timeout),
    2827                 KEY_LEN+1);
     2774      strcpy(fileHash,                         /* known to fit */
     2775             sh_tiger_generic_hash (filename, TIGER_FD, tmpFile.size,
     2776                                    alert_timeout));
    28282777
    28292778      /* return */
     
    28322781
    28332782 out:
    2834   sl_strlcpy(fileHash,
    2835              _("000000000000000000000000000000000000000000000000"),
    2836              KEY_LEN+1);
     2783  strcpy(fileHash,                              /* known to fit */
     2784         _("000000000000000000000000000000000000000000000000"));
    28372785  SL_RETURN( -1, _("sh_unix_checksum_size"));
    28382786}
     
    29552903    {
    29562904      if (fileHash != NULL)
    2957         sl_strlcpy(fileHash,
    2958                    _("000000000000000000000000000000000000000000000000"),
    2959                    KEY_LEN+1);
     2905        strcpy(fileHash,                              /* known to fit */
     2906               _("000000000000000000000000000000000000000000000000"));
    29602907    }
    29612908 
     
    29732920          if ((theFile->check_mask & MODI_CHK) == 0)
    29742921            {
    2975               sl_strlcpy(fileHash,
    2976                          _("000000000000000000000000000000000000000000000000"),
    2977                          KEY_LEN+1);
     2922              strcpy(fileHash,                         /* known to fit */
     2923                     _("000000000000000000000000000000000000000000000000"));
    29782924            }
    29792925          else if ((theFile->check_mask & MODI_PREL) != 0 &&
     
    29832929              if (0 != sh_prelink_run (theFile->fullpath,
    29842930                                       fileHash, alert_timeout))
    2985                 sl_strlcpy(fileHash,
    2986                            _("000000000000000000000000000000000000000000000000"),
    2987                            KEY_LEN+1);
     2931                strcpy(fileHash,                       /* known to fit */
     2932                       _("000000000000000000000000000000000000000000000000"));
    29882933            }
    29892934          else
    29902935            {
    29912936              tiger_fd = rval_open;
    2992               sl_strlcpy(fileHash,
    2993                          sh_tiger_generic_hash (theFile->fullpath,
    2994                                                 TIGER_FD, 0,
    2995                                                 alert_timeout),
    2996                          KEY_LEN+1);
     2937              strcpy(fileHash,                         /* known to fit */
     2938                     sh_tiger_generic_hash (theFile->fullpath, TIGER_FD, 0,
     2939                                            alert_timeout));
    29972940              if ((theFile->check_mask & MODI_SGROW) != 0)
    29982941                {
     
    30172960          if ((theFile->check_mask & MODI_CHK) == 0)
    30182961            {
    3019               sl_strlcpy(fileHash,
    3020                          _("000000000000000000000000000000000000000000000000"),
    3021                          KEY_LEN+1);
     2962              strcpy(fileHash,                         /* known to fit */
     2963                     _("000000000000000000000000000000000000000000000000"));
    30222964            }
    30232965          else if (policy == SH_LEVEL_PRELINK &&
     
    30272969              if (0 != sh_prelink_run (theFile->fullpath,
    30282970                                       fileHash, alert_timeout))
    3029                 sl_strlcpy(fileHash,
    3030                            _("000000000000000000000000000000000000000000000000"),
    3031                            KEY_LEN+1);
     2971                strcpy(fileHash,                       /* known to fit */
     2972                       _("000000000000000000000000000000000000000000000000"));
    30322973            }
    30332974          else
     
    32043145      linknamebuf = SH_ALLOC(PATH_MAX);
    32053146
    3206       /* flawfinder: ignore */
    32073147      linksize    = readlink (theFile->fullpath, linknamebuf, PATH_MAX-1);
    32083148
     
    32203160          SH_FREE(tmp2);
    32213161          SH_FREE(linknamebuf);
    3222           theFile->linkpath[0] = '-';
    3223           theFile->linkpath[1] = '\0';
    32243162          SL_RETURN((-1),_("sh_unix_getinfo"));
    32253163        }
     
    40443982    {
    40453983#ifdef WITH_TPT
    4046       sl_snprintf(str, sizeof(str), _("file: %s line: %d page: %d"),
     3984      sl_snprintf(str, 128, _("file: %s line: %d page: %d"),
    40473985                  page_list->file, page_list->line, i+1);
    40483986      sh_error_handle(SH_ERR_INFO, FIL__, __LINE__, i, MSG_E_SUBGEN,
     
    40523990      ++i;
    40533991    }
    4054   sl_snprintf(str, sizeof(str), _("%d pages locked"), i);
     3992  sl_snprintf(str, 128, _("%d pages locked"), i);
    40553993  sh_error_handle(SH_ERR_INFO, FIL__, __LINE__, i, MSG_E_SUBGEN,
    40563994                  str, _("sh_unix_count_mlock"));
Note: See TracChangeset for help on using the changeset viewer.