diff options
Diffstat (limited to 'src/entropy/unix_procs')
-rw-r--r-- | src/entropy/unix_procs/es_unix.cpp | 15 | ||||
-rw-r--r-- | src/entropy/unix_procs/es_unix.h | 2 | ||||
-rw-r--r-- | src/entropy/unix_procs/unix_src.cpp | 46 |
3 files changed, 36 insertions, 27 deletions
diff --git a/src/entropy/unix_procs/es_unix.cpp b/src/entropy/unix_procs/es_unix.cpp index 039479308..5756f93dd 100644 --- a/src/entropy/unix_procs/es_unix.cpp +++ b/src/entropy/unix_procs/es_unix.cpp @@ -9,6 +9,7 @@ #include <botan/internal/unix_cmd.h> #include <botan/parsing.h> #include <algorithm> + #include <sys/time.h> #include <sys/stat.h> #include <sys/resource.h> @@ -22,7 +23,12 @@ namespace { * Sort ordering by priority */ bool Unix_Program_Cmp(const Unix_Program& a, const Unix_Program& b) - { return (a.priority < b.priority); } + { + if(a.priority == b.priority) + return (a.name_and_args < b.name_and_args); + + return (a.priority < b.priority); + } } @@ -32,7 +38,8 @@ bool Unix_Program_Cmp(const Unix_Program& a, const Unix_Program& b) Unix_EntropySource::Unix_EntropySource(const std::vector<std::string>& path) : PATH(path) { - add_default_sources(sources); + std::vector<Unix_Program> default_sources = get_default_sources(); + add_sources(&default_sources[0], default_sources.size()); } /** @@ -74,10 +81,8 @@ void Unix_EntropySource::poll(Entropy_Accumulator& accum) accum.add(::getpid(), 0); accum.add(::getppid(), 0); accum.add(::getuid(), 0); - accum.add(::geteuid(), 0); - accum.add(::getegid(), 0); + accum.add(::getgid(), 0); accum.add(::getpgrp(), 0); - accum.add(::getsid(0), 0); struct ::rusage usage; ::getrusage(RUSAGE_SELF, &usage); diff --git a/src/entropy/unix_procs/es_unix.h b/src/entropy/unix_procs/es_unix.h index 03496b364..415cce9fe 100644 --- a/src/entropy/unix_procs/es_unix.h +++ b/src/entropy/unix_procs/es_unix.h @@ -27,7 +27,7 @@ class Unix_EntropySource : public EntropySource void add_sources(const Unix_Program[], u32bit); Unix_EntropySource(const std::vector<std::string>& path); private: - static void add_default_sources(std::vector<Unix_Program>&); + static std::vector<Unix_Program> get_default_sources(); void fast_poll(Entropy_Accumulator& accum); const std::vector<std::string> PATH; diff --git a/src/entropy/unix_procs/unix_src.cpp b/src/entropy/unix_procs/unix_src.cpp index a72ecf055..51af6bd40 100644 --- a/src/entropy/unix_procs/unix_src.cpp +++ b/src/entropy/unix_procs/unix_src.cpp @@ -12,50 +12,54 @@ namespace Botan { /** * Default Commands for Entropy Gathering */ -void Unix_EntropySource::add_default_sources(std::vector<Unix_Program>& srcs) +std::vector<Unix_Program> Unix_EntropySource::get_default_sources() { - srcs.push_back(Unix_Program("vmstat", 1)); - srcs.push_back(Unix_Program("vmstat -s", 1)); - srcs.push_back(Unix_Program("pfstat", 1)); + std::vector<Unix_Program> srcs; + srcs.push_back(Unix_Program("netstat -in", 1)); + srcs.push_back(Unix_Program("pfstat", 1)); + srcs.push_back(Unix_Program("vmstat -s", 1)); + srcs.push_back(Unix_Program("vmstat", 1)); + srcs.push_back(Unix_Program("arp -a -n", 2)); + srcs.push_back(Unix_Program("ifconfig -a", 2)); srcs.push_back(Unix_Program("iostat", 2)); + srcs.push_back(Unix_Program("ipcs -a", 2)); srcs.push_back(Unix_Program("mpstat", 2)); + srcs.push_back(Unix_Program("netstat -an", 2)); + srcs.push_back(Unix_Program("netstat -s", 2)); srcs.push_back(Unix_Program("nfsstat", 2)); srcs.push_back(Unix_Program("portstat", 2)); - srcs.push_back(Unix_Program("arp -a -n", 2)); - srcs.push_back(Unix_Program("ifconfig -a", 2)); + srcs.push_back(Unix_Program("procinfo -a", 2)); srcs.push_back(Unix_Program("pstat -T", 2)); srcs.push_back(Unix_Program("pstat -s", 2)); srcs.push_back(Unix_Program("uname -a", 2)); srcs.push_back(Unix_Program("uptime", 2)); - srcs.push_back(Unix_Program("ipcs -a", 2)); - srcs.push_back(Unix_Program("procinfo -a", 2)); - srcs.push_back(Unix_Program("sysinfo", 3)); srcs.push_back(Unix_Program("listarea", 3)); srcs.push_back(Unix_Program("listdev", 3)); - - srcs.push_back(Unix_Program("who", 3)); - srcs.push_back(Unix_Program("finger", 3)); - srcs.push_back(Unix_Program("netstat -s", 3)); - srcs.push_back(Unix_Program("netstat -an", 3)); srcs.push_back(Unix_Program("ps -A", 3)); - srcs.push_back(Unix_Program("mailstats", 3)); - srcs.push_back(Unix_Program("rpcinfo -p localhost", 3)); + srcs.push_back(Unix_Program("sysinfo", 3)); + + srcs.push_back(Unix_Program("finger", 4)); + srcs.push_back(Unix_Program("mailstats", 4)); + srcs.push_back(Unix_Program("rpcinfo -p localhost", 4)); + srcs.push_back(Unix_Program("who", 4)); - srcs.push_back(Unix_Program("dmesg", 4)); - srcs.push_back(Unix_Program("ls -alni /tmp", 4)); - srcs.push_back(Unix_Program("ls -alni /proc", 4)); srcs.push_back(Unix_Program("df -l", 4)); + srcs.push_back(Unix_Program("dmesg", 4)); srcs.push_back(Unix_Program("last -5", 4)); + srcs.push_back(Unix_Program("ls -alni /proc", 4)); + srcs.push_back(Unix_Program("ls -alni /tmp", 4)); srcs.push_back(Unix_Program("pstat -f", 4)); - srcs.push_back(Unix_Program("ps aux", 5)); srcs.push_back(Unix_Program("ps -elf", 5)); + srcs.push_back(Unix_Program("ps aux", 5)); + srcs.push_back(Unix_Program("lsof -n", 6)); srcs.push_back(Unix_Program("sar -A", 6)); - srcs.push_back(Unix_Program("lsof", 6)); + + return srcs; } } |