aboutsummaryrefslogtreecommitdiffstats
path: root/ruby.c
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
commit6fd04415db2bf6e25087c197b5cc4a95a7fbb7cb (patch)
tree23fcbcc611a9ee41e23b0d7ff0edb3f7609b3cbb /ruby.c
parentc9a38187dc3b9d159a45f771521e44187f995a1b (diff)
downloadruby-6fd04415db2bf6e25087c197b5cc4a95a7fbb7cb.tar.gz
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
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/ruby.c b/ruby.c
index c26a5dd8de..e11f236870 100644
--- a/ruby.c
+++ b/ruby.c
@@ -2052,6 +2052,8 @@ proc_argv0(VALUE process)
return rb_orig_progname;
}
+static VALUE ruby_setproctitle(VALUE title);
+
/*
* 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 ruby_setproctitle(title);
+}
+static VALUE
+ruby_setproctitle(VALUE title)
+{
+ const char *ptr = StringValueCStr(title);
+ setproctitle("%.*s", RSTRING_LENINT(title), ptr);
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));
+ rb_progname = rb_str_new_frozen(ruby_setproctitle(val));
}
static inline VALUE