summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-19 11:24:03 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-19 11:24:03 +0000
commitf16f0441d681dd9d2e09631fd068268a63fe1f3b ()
tree23fcbcc611a9ee41e23b0d7ff0edb3f7609b3cbb
parent42c98194b37bf2c0b0f3f88f8530f46f55a6d55c (diff)
ruby.c: reject NUL in $0
* ruby.c (ruby_setproctitle): raise if the argument contains NUL char. process title is a NUL-terminated string. [ruby-core:82425] [Bug #13829] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60215 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ruby.c14
-rw-r--r--test/ruby/test_rubyoptions.rb7
2 files changed, 17 insertions, 4 deletions
@@ -2052,6 +2052,8 @@ proc_argv0(VALUE process)
return rb_orig_progname;
}
/*
* call-seq:
* Process.setproctitle(string) -> string
@@ -2072,10 +2074,14 @@ proc_argv0(VALUE process)
static VALUE
proc_setproctitle(VALUE process, VALUE title)
{
- StringValue(title);
-
- setproctitle("%.*s", RSTRING_LENINT(title), RSTRING_PTR(title));
return title;
}
@@ -2085,7 +2091,7 @@ set_arg0(VALUE val, ID id)
if (origarg.argv == 0)
rb_raise(rb_eRuntimeError, "$0 not initialized");
- rb_progname = rb_str_new_frozen(proc_setproctitle(rb_mProcess, val));
}
static inline VALUE
@@ -549,6 +549,13 @@ class TestRubyOptions < Test::Unit::TestCase
def test_setproctitle
skip "platform dependent feature" unless defined?(PSCMD) and PSCMD
with_tmpchdir do
write_file("test-script", "$_0 = $0.dup; Process.setproctitle('hello world'); $0 == $_0 or Process.setproctitle('$0 changed!'); sleep 60")