summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwtchang%redhat.com <devnull@localhost>2006-09-11 23:13:44 +0000
committerwtchang%redhat.com <devnull@localhost>2006-09-11 23:13:44 +0000
commitaad5fb68daf7c0c6ce386631db0be947428311e7 (patch)
tree877669bddc5b263f2c503f9c1d15d93180382ef6
parent7451ed5b7c26c6d76446312d95a09ed69b2c24ed (diff)
downloadnspr-hg-aad5fb68daf7c0c6ce386631db0be947428311e7.tar.gz
351470: setuid root programs linked with NSPR allow elevation of privilege.
r=nelson, sr=wtc Tag: MOZILLA_1_8_BRANCH
-rw-r--r--pr/src/io/prfdcach.c8
-rw-r--r--pr/src/misc/pratom.c2
2 files changed, 10 insertions, 0 deletions
diff --git a/pr/src/io/prfdcach.c b/pr/src/io/prfdcach.c
index aea19dff..d1277fcd 100644
--- a/pr/src/io/prfdcach.c
+++ b/pr/src/io/prfdcach.c
@@ -277,6 +277,14 @@ void _PR_InitFdCache(void)
if (NULL != low) _pr_fd_cache.limit_low = atoi(low);
if (NULL != high) _pr_fd_cache.limit_high = atoi(high);
+ if (_pr_fd_cache.limit_low < 0)
+ _pr_fd_cache.limit_low = 0;
+ if (_pr_fd_cache.limit_low > FD_SETSIZE)
+ _pr_fd_cache.limit_low = FD_SETSIZE;
+
+ if (_pr_fd_cache.limit_high > FD_SETSIZE)
+ _pr_fd_cache.limit_high = FD_SETSIZE;
+
if (_pr_fd_cache.limit_high < _pr_fd_cache.limit_low)
_pr_fd_cache.limit_high = _pr_fd_cache.limit_low;
diff --git a/pr/src/misc/pratom.c b/pr/src/misc/pratom.c
index 24028e56..35b86c0d 100644
--- a/pr/src/misc/pratom.c
+++ b/pr/src/misc/pratom.c
@@ -120,6 +120,8 @@ int index;
if (num_atomic_locks > MAX_ATOMIC_LOCKS)
num_atomic_locks = MAX_ATOMIC_LOCKS;
+ else if (num_atomic_locks < 1)
+ num_atomic_locks = 1;
else {
num_atomic_locks = PR_FloorLog2(num_atomic_locks);
num_atomic_locks = 1L << num_atomic_locks;