X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?p=ossec-hids.git;a=blobdiff_plain;f=src%2Futil%2Fclear_stats.c;h=c258c74773752d71bd055844eceabc248a3325ca;hp=068b57385ba56372b236f2bea64892f8313be4f7;hb=3f728675941dc69d4e544d3a880a56240a6e394a;hpb=927951d1c1ad45ba9e7325f07d996154a91c911b diff --git a/src/util/clear_stats.c b/src/util/clear_stats.c old mode 100755 new mode 100644 index 068b573..c258c74 --- a/src/util/clear_stats.c +++ b/src/util/clear_stats.c @@ -1,6 +1,3 @@ -/* @(#) $Id: ./src/util/clear_stats.c, 2011/09/08 dcid Exp $ - */ - /* Copyright (C) 2009 Trend Micro Inc. * All right reserved. * @@ -10,17 +7,18 @@ * Foundation */ - -/* This tool will clear the project statistics */ +/* This tool will clear the event statistics */ #include "shared.h" #undef ARGV0 #define ARGV0 "clear_stats" +/* Prototypes */ +static void helpmsg(void) __attribute__((noreturn)); -/** help **/ -void helpmsg() + +static void helpmsg() { printf("\nOSSEC HIDS %s: Clear the events stats (averages).\n", ARGV0); printf("Available options:\n"); @@ -31,109 +29,82 @@ void helpmsg() exit(1); } - -/** main **/ int main(int argc, char **argv) { int clear_daily = 0; int clear_weekly = 0; - char *dir = DEFAULTDIR; - char *group = GROUPGLOBAL; - char *user = USER; - int gid; - int uid; + const char *dir = DEFAULTDIR; + const char *group = GROUPGLOBAL; + const char *user = USER; + gid_t gid; + uid_t uid; - - /* Setting the name */ + /* Set the name */ OS_SetName(ARGV0); - /* user arguments */ - if(argc != 2) - { + if (argc != 2) { helpmsg(); } - /* Getting the group name */ + /* Get the group name */ gid = Privsep_GetGroup(group); uid = Privsep_GetUser(user); - if(gid < 0) - { - ErrorExit(USER_ERROR, ARGV0, user, group); + if (uid == (uid_t) - 1 || gid == (gid_t) - 1) { + ErrorExit(USER_ERROR, ARGV0, user, group); } - - /* Setting the group */ - if(Privsep_SetGroup(gid) < 0) - { - ErrorExit(SETGID_ERROR,ARGV0, group); + /* Set the group */ + if (Privsep_SetGroup(gid) < 0) { + ErrorExit(SETGID_ERROR, ARGV0, group, errno, strerror(errno)); } - - /* Chrooting to the default directory */ - if(Privsep_Chroot(dir) < 0) - { - ErrorExit(CHROOT_ERROR, ARGV0, dir); + /* Chroot to the default directory */ + if (Privsep_Chroot(dir) < 0) { + ErrorExit(CHROOT_ERROR, ARGV0, dir, errno, strerror(errno)); } - /* Inside chroot now */ nowChroot(); - - /* Setting the user */ - if(Privsep_SetUser(uid) < 0) - { - ErrorExit(SETUID_ERROR, ARGV0, user); + /* Set the user */ + if (Privsep_SetUser(uid) < 0) { + ErrorExit(SETUID_ERROR, ARGV0, user, errno, strerror(errno)); } /* User options */ - if(strcmp(argv[1], "-h") == 0) - { + if (strcmp(argv[1], "-h") == 0) { helpmsg(); - } - else if(strcmp(argv[1], "-a") == 0) - { + } else if (strcmp(argv[1], "-a") == 0) { clear_daily = 1; clear_weekly = 1; - } - else if(strcmp(argv[1], "-d") == 0) - { + } else if (strcmp(argv[1], "-d") == 0) { clear_daily = 1; - } - else if(strcmp(argv[1], "-w") == 0) - { + } else if (strcmp(argv[1], "-w") == 0) { clear_weekly = 1; - } - else - { + } else { printf("\n** Invalid option '%s'.\n", argv[1]); helpmsg(); } - /* Clear daily files */ - if(clear_daily) - { - char *daily_dir = STATQUEUE; + if (clear_daily) { + const char *daily_dir = STATQUEUE; DIR *daily; struct dirent *entry; daily = opendir(daily_dir); - if(!daily) - { + if (!daily) { ErrorExit("%s: Unable to open: '%s'", ARGV0, daily_dir); } - while((entry = readdir(daily)) != NULL) - { - char full_path[OS_MAXSTR +1]; + while ((entry = readdir(daily)) != NULL) { + char full_path[OS_MAXSTR + 1]; /* Do not even attempt to delete . and .. :) */ - if((strcmp(entry->d_name,".") == 0)|| - (strcmp(entry->d_name,"..") == 0)) - { + if ((strcmp(entry->d_name, ".") == 0) || + (strcmp(entry->d_name, "..") == 0)) { continue; } @@ -146,41 +117,35 @@ int main(int argc, char **argv) closedir(daily); } - /* Clear weekly averages */ - if(clear_weekly) - { + if (clear_weekly) { int i = 0; - while(i <= 6) - { - char *daily_dir = STATWQUEUE; - char dir_path[OS_MAXSTR +1]; + while (i <= 6) { + const char *daily_dir = STATWQUEUE; + char dir_path[OS_MAXSTR + 1]; DIR *daily; struct dirent *entry; snprintf(dir_path, OS_MAXSTR, "%s/%d", daily_dir, i); daily = opendir(dir_path); - if(!daily) - { + if (!daily) { ErrorExit("%s: Unable to open: '%s' (no stats)", - ARGV0, dir_path); + ARGV0, dir_path); } - while((entry = readdir(daily)) != NULL) - { - char full_path[OS_MAXSTR +1]; + while ((entry = readdir(daily)) != NULL) { + char full_path[OS_MAXSTR + 1]; /* Do not even attempt to delete . and .. :) */ - if((strcmp(entry->d_name,".") == 0)|| - (strcmp(entry->d_name,"..") == 0)) - { + if ((strcmp(entry->d_name, ".") == 0) || + (strcmp(entry->d_name, "..") == 0)) { continue; } /* Remove file */ full_path[OS_MAXSTR] = '\0'; snprintf(full_path, OS_MAXSTR, "%s/%s", dir_path, - entry->d_name); + entry->d_name); unlink(full_path); } @@ -190,8 +155,6 @@ int main(int argc, char **argv) } printf("\n** Internal stats clear.\n\n"); - return(0); + return (0); } - -/* EOF */