aboutsummaryrefslogtreecommitdiffstats
path: root/src/entropy/unix_procs
diff options
context:
space:
mode:
Diffstat (limited to 'src/entropy/unix_procs')
-rw-r--r--src/entropy/unix_procs/es_unix.cpp15
-rw-r--r--src/entropy/unix_procs/es_unix.h2
-rw-r--r--src/entropy/unix_procs/unix_src.cpp46
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;
}
}