X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?a=blobdiff_plain;f=src%2Frootcheck%2Fcheck_rc_readproc.c;h=6cc763ed250a1474ad225bb8ffc565f6a3302ec2;hb=6ef2f786c6c8ead94841b5f93baf9f43421f08c8;hp=d086b38654943ed58a0cf48470cfe916e7398d81;hpb=914feba5d54f979cd5d7e69c349c3d01f630042a;p=ossec-hids.git diff --git a/src/rootcheck/check_rc_readproc.c b/src/rootcheck/check_rc_readproc.c index d086b38..6cc763e 100755 --- a/src/rootcheck/check_rc_readproc.c +++ b/src/rootcheck/check_rc_readproc.c @@ -1,15 +1,16 @@ -/* @(#) $Id: check_rc_readproc.c,v 1.8 2009/06/24 18:53:07 dcid Exp $ */ +/* @(#) $Id: ./src/rootcheck/check_rc_readproc.c, 2011/09/08 dcid Exp $ + */ /* Copyright (C) 2009 Trend Micro Inc. * All right reserved. * * This program is a free software; you can redistribute it * and/or modify it under the terms of the GNU General Public - * License (version 3) as published by the FSF - Free Software + * License (version 2) as published by the FSF - Free Software * Foundation */ - + #ifndef WIN32 #include "shared.h" #include "rootcheck.h" @@ -28,18 +29,18 @@ int read_proc_dir(char *dir_name, char *pid, int position); int read_proc_file(char *file_name, char *pid, int position) { struct stat statbuf; - + if(lstat(file_name, &statbuf) < 0) { return(-1); } - + /* If directory, read the directory */ else if(S_ISDIR(statbuf.st_mode)) { return(read_proc_dir(file_name, pid, position)); } - + return(0); } @@ -49,16 +50,16 @@ int read_proc_file(char *file_name, char *pid, int position) int read_proc_dir(char *dir_name, char *pid, int position) { DIR *dp; - + struct dirent *entry; - + if((dir_name == NULL)||(strlen(dir_name) > PATH_MAX)) { merror("%s: Invalid directory given",ARGV0); return(-1); } - + /* Opening the directory given */ dp = opendir(dir_name); if(!dp) @@ -72,7 +73,7 @@ int read_proc_dir(char *dir_name, char *pid, int position) /* Just ignore . and .. */ if((strcmp(entry->d_name,".") == 0) || - (strcmp(entry->d_name,"..") == 0)) + (strcmp(entry->d_name,"..") == 0)) continue; if(position == PROC) @@ -90,8 +91,8 @@ int read_proc_dir(char *dir_name, char *pid, int position) if(*tmp_str != '\0') continue; - - + + snprintf(f_name, PATH_MAX +1, "%s/%s",dir_name, entry->d_name); read_proc_file(f_name, pid, position+1); @@ -122,7 +123,7 @@ int read_proc_dir(char *dir_name, char *pid, int position) } closedir(dp); - + return(0); } @@ -136,17 +137,17 @@ int check_rc_readproc(int pid) char char_pid[32]; proc_pid_found = 0; - - /* NL threads */ + + /* NL threads */ snprintf(char_pid, 31, "/proc/.%d", pid); if(is_file(char_pid)) return(1); - - + + snprintf(char_pid, 31, "%d", pid); - + read_proc_dir("/proc", char_pid, PROC); - + return(proc_pid_found); }