Project

General

Profile

Bug #4467

Process.maxgroups= should only accept numeric values

Added by djberg96 (Daniel Berger) over 8 years ago. Updated about 8 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
ruby -v:
-
[ruby-core:35426]

Description

=begin
At the moment Process.maxgroups= accepts non-numeric values, which results in defaulting to 4096. IMO it should raise a TypeError.

diff --git a/process.orig b/process.c
index f658fa9..c3c4a1f 100644
--- a/process.orig
+++ b/process.c
@@ -2752,7 +2752,7 @@ proc_getmaxgroups(obj)
static VALUE
proc_setmaxgroups(VALUE obj, VALUE val)
{

  • size_t ngroups = FIX2INT(val);
  • size_t ngroups = NUM2INT(val);

    if (ngroups > 4096)
    ngroups = 4096;
    =end

History

Updated by djberg96 (Daniel Berger) over 8 years ago

=begin
I'd also argue that it should raise an ArgumentError for values less than 0.
=end

Updated by kosaki (Motohiro KOSAKI) over 8 years ago

=begin
Hi

Process.maxgroup has more serious issue. Linux has 65536 maxgroup, but Ruby restrict it

  1. It's bad. :-/ So, I'd propse 1) deprecate maxgroups= method 2) maxgroup method use sysconf(_SC_NGROUPS_MAX) (or NGROUPS_MAX macro if the platform don't have sysctl) instead mysterious 4096.

=end

Updated by kosaki (Motohiro KOSAKI) over 8 years ago

  • ruby -v changed from ruby 1.8.7 (2010-08-16 patchlevel 334) [i686-linux] to -

=begin

Hi

Process.maxgroup has more serious issue. Linux has 65536 maxgroup, but Ruby restrict it

  1. It's bad. :-/ So, I'd propse 1) deprecate maxgroups= method 2) maxgroup method use sysconf(_SC_NGROUPS_MAX) (or NGROUPS_MAX macro if the platform don't have sysctl) instead mysterious 4096.

sitenode: Today, I've searched maxgroups usecase awhile. But, I have
no luck. I haven't
found any usecase. Instead JRuby don't implement both maxgroups and
maxgroups= method. Then, I think this is no big issue...
=end

Updated by kosaki (Motohiro KOSAKI) over 8 years ago

=begin
Hi Daniel,

I've applyed the suggest of Coeemnt#1 (ie. negative value check) by r31035 into trunk.
But I can't reproduce your mention of to accept non numeric value. At least, trunk seems to
reject non numeric value already.

% ./ruby-193 -e 'Process.maxgroups="100"'
-e:1:in maxgroups=': can't convert String into Integer (TypeError)
from -e:1:in
'

So, could you please post your test code?

=end

Updated by djberg96 (Daniel Berger) over 8 years ago

=begin
My report was for 1.8.7:

irb(main):003:0> Process.maxgroups = "test"
=> "test"
irb(main):004:0> Process.maxgroups
=> 4096

It must have been fixed in 1.9.

Regards,

Dan
=end

Updated by kosaki (Motohiro KOSAKI) over 8 years ago

  • Status changed from Open to Closed

=begin

=end

Updated by djberg96 (Daniel Berger) over 8 years ago

=begin
I agree, Process.maxgroups= should be deprecated unless there's an underlying posix call that supports it. I don't think there is one, and I agree that there doesn't seem to be a use case for it.
=end

Updated by naruse (Yui NARUSE) over 8 years ago

=begin
(2011/03/07 12:47), Kiyotaka ATSUMI wrote:

Recently, I received some mails written as "To:
undisclosed-recipients:;" from this mailing list.

Since I am classifying e-mail according to 'To' field, I cannot
classify such mail, and I am in trouble. So, please write
"ruby-core@ruby-lang.org" to 'To' field if possible.

Using 'To' field breaks filters when ruby-core@ is in CC.

Correct way is see following fields:

  • X-ML-Name: ruby-core
  • List-Id: ruby-core.ruby-lang.org

--
NARUSE, Yui naruse@airemix.jp
=end

Updated by kosaki (Motohiro KOSAKI) over 8 years ago

=begin

Hi

Process.maxgroup has more serious issue. Linux has 65536 maxgroup, but Ruby restrict it

  1. It's bad. :-/ So, I'd propse 1) deprecate maxgroups= method 2) maxgroup method use sysconf(_SC_NGROUPS_MAX) (or NGROUPS_MAX macro if the platform don't have sysctl) instead mysterious 4096.

sitenode: Today, I've searched maxgroups usecase awhile. But, I have
no luck. I haven't
found any usecase. Instead JRuby don't implement both maxgroups and
maxgroups= method. Then, I think this is no big issue...
=end

Updated by naruse (Yui NARUSE) over 8 years ago

=begin
(2011/03/07 12:47), Kiyotaka ATSUMI wrote:

Recently, I received some mails written as "To:
undisclosed-recipients:;" from this mailing list.

Since I am classifying e-mail according to 'To' field, I cannot
classify such mail, and I am in trouble. So, please write
"ruby-core@ruby-lang.org" to 'To' field if possible.

Using 'To' field breaks filters when ruby-core@ is in CC.

Correct way is see following fields:

  • X-ML-Name: ruby-core
  • List-Id: ruby-core.ruby-lang.org

--
NARUSE, Yui naruse@airemix.jp
=end

Updated by kosaki (Motohiro KOSAKI) over 8 years ago

=begin

Hi

Process.maxgroup has more serious issue. Linux has 65536 maxgroup, but Ruby restrict it

  1. It's bad. :-/ So, I'd propse 1) deprecate maxgroups= method 2) maxgroup method use sysconf(_SC_NGROUPS_MAX) (or NGROUPS_MAX macro if the platform don't have sysctl) instead mysterious 4096.

sitenode: Today, I've searched maxgroups usecase awhile. But, I have
no luck. I haven't
found any usecase. Instead JRuby don't implement both maxgroups and
maxgroups= method. Then, I think this is no big issue...
=end

Updated by naruse (Yui NARUSE) over 8 years ago

=begin
(2011/03/07 12:47), Kiyotaka ATSUMI wrote:

Recently, I received some mails written as "To:
undisclosed-recipients:;" from this mailing list.

Since I am classifying e-mail according to 'To' field, I cannot
classify such mail, and I am in trouble. So, please write
"ruby-core@ruby-lang.org" to 'To' field if possible.

Using 'To' field breaks filters when ruby-core@ is in CC.

Correct way is see following fields:

  • X-ML-Name: ruby-core
  • List-Id: ruby-core.ruby-lang.org

--
NARUSE, Yui naruse@airemix.jp
=end

Also available in: Atom PDF