Changes in trunk/src/sh_unix.c [30:20]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/sh_unix.c
r30 r20 127 127 unsigned long mask_USER0 = MASK_USER_; 128 128 unsigned 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_;132 129 unsigned long mask_ALLIGNORE = MASK_ALLIGNORE_; 133 130 unsigned long mask_ATTRIBUTES = MASK_ATTRIBUTES_; … … 145 142 mask_USER0 = MASK_USER_; 146 143 mask_USER1 = MASK_USER_; 147 mask_USER2 = MASK_USER_;148 mask_USER3 = MASK_USER_;149 mask_USER4 = MASK_USER_;150 144 mask_ALLIGNORE = MASK_ALLIGNORE_; 151 145 mask_ATTRIBUTES = MASK_ATTRIBUTES_; … … 313 307 *p = '0' + (u % 10); 314 308 u /= 10; 315 } while (u && (p != str));316 if ( (iisneg == 1) && (p != str)) {309 } while (u); 310 if (iisneg == 1) { 317 311 --p; 318 312 *p = '-'; … … 329 323 extern int OnlyStderr; 330 324 331 int safe_logger (int signal, int method, char * details)325 int safe_logger (int signal, int method, pid_t thepid) 332 326 { 333 327 int i = 0; … … 337 331 char str[128]; 338 332 char * p; 339 333 340 334 char l0[64], l1[64], l2[64], l3[64]; 341 335 char a0[32], a1[32], a2[32]; 342 336 char e0[128]; 343 337 char msg[128]; 344 338 345 339 char * locations[] = { NULL, NULL, NULL, NULL, NULL }; 346 340 char * envp[] = { NULL, NULL }; 347 341 char * argp[] = { NULL, NULL, NULL, NULL, NULL }; 348 349 pid_t thepid = getpid(); 350 342 351 343 if ((sh.flag.isdaemon == S_FALSE) || (OnlyStderr == S_TRUE)) 352 344 method = 1; 353 345 354 346 /* seems that solaris cc needs this way of initializing ... 355 347 */ … … 358 350 locations[2] = l2; 359 351 locations[3] = l3; 360 352 361 353 envp[0] = e0; 362 354 363 355 argp[0] = a0; 364 356 argp[1] = a1; 365 357 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 367 371 sl_strlcpy(msg, _("samhain["), 128); 368 372 p = safe_itoa((int) thepid, str, 128); … … 371 375 if (signal == 0) 372 376 { 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); 379 378 } 380 379 else … … 394 393 return 0; 395 394 } 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 410 395 while (locations[i] != NULL) { 411 396 status = stat(locations[i], &buf); … … 429 414 } 430 415 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 }449 416 450 417 extern char sh_sig_msg[64]; … … 484 451 { 485 452 chdir ("/"); 486 safe_logger (mysignal, 0, NULL);453 safe_logger (mysignal, 0, getpid()); 487 454 } 488 455 _exit(mysignal); … … 537 504 memset (skey, '\0', sizeof(sh_key_t)); 538 505 if (immediate_exit_fast < 2) 539 safe_logger (mysignal, 0, NULL);506 safe_logger (mysignal, 0, getpid()); 540 507 _exit(mysignal); 541 508 #else … … 551 518 close_ipc (); 552 519 #endif 553 safe_logger (mysignal, 0, NULL);520 safe_logger (mysignal, 0, getpid()); 554 521 chdir ("/"); 555 522 raise(SIGFPE); … … 852 819 /* checksum the own binary 853 820 */ 854 int sh_unix_self_hash (c onst char * c)821 int sh_unix_self_hash (char * c) 855 822 { 856 823 char message[512]; … … 924 891 925 892 /* added Tue Feb 22 10:36:44 NFT 2000 Rainer Wichmann */ 926 static int tf_add_trusted_user_int(c onst char * c)893 static int tf_add_trusted_user_int(char * c) 927 894 { 928 895 register struct passwd * w; … … 952 919 } 953 920 954 int tf_add_trusted_user(c onst char * c)921 int tf_add_trusted_user(char * c) 955 922 { 956 923 int i; … … 1262 1229 char ** env1; 1263 1230 int envlen = 0; 1264 size_t len;1265 1231 1266 1232 SL_ENTER(_("sh_unix_copyenv")); … … 1282 1248 envlen = 0; 1283 1249 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 */ 1287 1252 if (env1[envlen] == NULL) 1288 1253 { … … 1290 1255 SL_RET0(_("sh_unix_copyenv")); 1291 1256 } 1292 s l_strlcpy(env1[envlen], env0[envlen], len);1257 strcpy(env1[envlen], env0[envlen]); /* known to fit */ 1293 1258 ++envlen; 1294 1259 } … … 1451 1416 #include <arpa/inet.h> 1452 1417 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 1467 1418 /* uname() on FreeBSD is broken, because the 'nodename' buf is too small 1468 1419 * to hold a valid (leftmost) domain label. … … 1484 1435 1485 1436 (void) uname (&buf); 1486 /* flawfinder: ignore */ /* ff bug, ff sees system() */ 1437 1487 1438 sl_strlcpy (sh.host.system, buf.sysname, SH_MINIBUF); 1488 1439 sl_strlcpy (sh.host.release, buf.release, SH_MINIBUF); … … 1535 1486 else 1536 1487 { 1537 sl_strlcpy (sh.host.name, sh_unix_h_name(he1), SH_PATHBUF);1488 sl_strlcpy (sh.host.name, he1->h_name, SH_PATHBUF); 1538 1489 } 1539 1490 … … 1583 1534 if (he1 != NULL) 1584 1535 { 1585 sl_strlcpy (sh.host.name, sh_unix_h_name(he1), SH_PATHBUF);1536 sl_strlcpy (sh.host.name, he1->h_name, SH_PATHBUF); 1586 1537 } 1587 1538 else … … 1688 1639 aud_exit(FIL__, __LINE__, EXIT_FAILURE); 1689 1640 } 1690 /* flawfinder: ignore */1691 1641 return (chroot(chroot_dir)); 1692 1642 } … … 1973 1923 } 1974 1924 1975 int sh_unix_settimeserver (c onst char * address)1925 int sh_unix_settimeserver (char * address) 1976 1926 { 1977 1927 … … 2146 2096 /* whether to use localtime for file timesatams in logs 2147 2097 */ 2148 int sh_unix_uselocaltime (c onst char * c)2098 int sh_unix_uselocaltime (char * c) 2149 2099 { 2150 2100 int i; … … 2782 2732 } 2783 2733 2784 int sh_unix_set_io_limit (c onst char * c)2734 int sh_unix_set_io_limit (char * c) 2785 2735 { 2786 2736 long val; … … 2822 2772 if (tmpFile.size < fbuf->st_size) 2823 2773 { 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)); 2828 2777 2829 2778 /* return */ … … 2832 2781 2833 2782 out: 2834 sl_strlcpy(fileHash, 2835 _("000000000000000000000000000000000000000000000000"), 2836 KEY_LEN+1); 2783 strcpy(fileHash, /* known to fit */ 2784 _("000000000000000000000000000000000000000000000000")); 2837 2785 SL_RETURN( -1, _("sh_unix_checksum_size")); 2838 2786 } … … 2955 2903 { 2956 2904 if (fileHash != NULL) 2957 sl_strlcpy(fileHash, 2958 _("000000000000000000000000000000000000000000000000"), 2959 KEY_LEN+1); 2905 strcpy(fileHash, /* known to fit */ 2906 _("000000000000000000000000000000000000000000000000")); 2960 2907 } 2961 2908 … … 2973 2920 if ((theFile->check_mask & MODI_CHK) == 0) 2974 2921 { 2975 sl_strlcpy(fileHash, 2976 _("000000000000000000000000000000000000000000000000"), 2977 KEY_LEN+1); 2922 strcpy(fileHash, /* known to fit */ 2923 _("000000000000000000000000000000000000000000000000")); 2978 2924 } 2979 2925 else if ((theFile->check_mask & MODI_PREL) != 0 && … … 2983 2929 if (0 != sh_prelink_run (theFile->fullpath, 2984 2930 fileHash, alert_timeout)) 2985 sl_strlcpy(fileHash, 2986 _("000000000000000000000000000000000000000000000000"), 2987 KEY_LEN+1); 2931 strcpy(fileHash, /* known to fit */ 2932 _("000000000000000000000000000000000000000000000000")); 2988 2933 } 2989 2934 else 2990 2935 { 2991 2936 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)); 2997 2940 if ((theFile->check_mask & MODI_SGROW) != 0) 2998 2941 { … … 3017 2960 if ((theFile->check_mask & MODI_CHK) == 0) 3018 2961 { 3019 sl_strlcpy(fileHash, 3020 _("000000000000000000000000000000000000000000000000"), 3021 KEY_LEN+1); 2962 strcpy(fileHash, /* known to fit */ 2963 _("000000000000000000000000000000000000000000000000")); 3022 2964 } 3023 2965 else if (policy == SH_LEVEL_PRELINK && … … 3027 2969 if (0 != sh_prelink_run (theFile->fullpath, 3028 2970 fileHash, alert_timeout)) 3029 sl_strlcpy(fileHash, 3030 _("000000000000000000000000000000000000000000000000"), 3031 KEY_LEN+1); 2971 strcpy(fileHash, /* known to fit */ 2972 _("000000000000000000000000000000000000000000000000")); 3032 2973 } 3033 2974 else … … 3204 3145 linknamebuf = SH_ALLOC(PATH_MAX); 3205 3146 3206 /* flawfinder: ignore */3207 3147 linksize = readlink (theFile->fullpath, linknamebuf, PATH_MAX-1); 3208 3148 … … 3220 3160 SH_FREE(tmp2); 3221 3161 SH_FREE(linknamebuf); 3222 theFile->linkpath[0] = '-';3223 theFile->linkpath[1] = '\0';3224 3162 SL_RETURN((-1),_("sh_unix_getinfo")); 3225 3163 } … … 4044 3982 { 4045 3983 #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"), 4047 3985 page_list->file, page_list->line, i+1); 4048 3986 sh_error_handle(SH_ERR_INFO, FIL__, __LINE__, i, MSG_E_SUBGEN, … … 4052 3990 ++i; 4053 3991 } 4054 sl_snprintf(str, sizeof(str), _("%d pages locked"), i);3992 sl_snprintf(str, 128, _("%d pages locked"), i); 4055 3993 sh_error_handle(SH_ERR_INFO, FIL__, __LINE__, i, MSG_E_SUBGEN, 4056 3994 str, _("sh_unix_count_mlock"));
Note:
See TracChangeset
for help on using the changeset viewer.