diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-09-22 09:57:31 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-09-22 09:57:31 +0000 |
commit | 80998fb135686cced7cdcd9c17b69fd8f0446e26 (patch) | |
tree | 186f59447951f7e2ed91dedd7e9d92d9e1cfe20b /cpp | |
parent | Fix (diff) | |
download | ice-80998fb135686cced7cdcd9c17b69fd8f0446e26.tar.bz2 ice-80998fb135686cced7cdcd9c17b69fd8f0446e26.tar.xz ice-80998fb135686cced7cdcd9c17b69fd8f0446e26.zip |
Fix
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/IceGrid/NodeI.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/cpp/src/IceGrid/NodeI.cpp b/cpp/src/IceGrid/NodeI.cpp index 3c4f7f9304f..bad7723f980 100644 --- a/cpp/src/IceGrid/NodeI.cpp +++ b/cpp/src/IceGrid/NodeI.cpp @@ -260,13 +260,20 @@ NodeI::NodeI(const Ice::ObjectAdapterPtr& adapter, struct nlist nl; nl.n_name = "avenrun"; nl.n_value = 0; - if(knlist(&nl, 1, sizeof(nl)) != 0) + if(knlist(&nl, 1, sizeof(nl)) == 0) { - _kmem = open("/dev/kmem", 0, 0); + _kmem = open("/dev/kmem", O_RDONLY); + + // + // Give up root permissions, it's only needed to access the file. + // + setuid(getuid()); + setgid(getgid()); } else { _kmem = -1; + cerr << "no k " << endl; } #else _nproc = 1; @@ -639,17 +646,17 @@ NodeI::keepAlive() #elif defined(_AIX) if(_kmem > 1) { - long avenrun[3]; + long long avenrun[3]; struct nlist nl; nl.n_name = "avenrun"; nl.n_value = 0; - if(knlist(&nl, 1, sizeof(nl)) != 0) + if(knlist(&nl, 1, sizeof(nl)) == 0) { if(pread(_kmem, avenrun, sizeof(avenrun), nl.n_value) >= sizeof(avenrun)) { - info.load1 = avenrun[0] / 65535.0f; - info.load5 = avenrun[1] / 65535.0f; - info.load15 = avenrun[2] / 65535.0f; + info.load1 = avenrun[0] / 65536.0f; + info.load5 = avenrun[1] / 65536.0f; + info.load15 = avenrun[2] / 65536.0f; } } } |