summaryrefslogtreecommitdiff
path: root/ext/etc
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-24 20:06:32 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-24 20:06:32 +0000
commit76940d8a763a45defd36a26bec4159c500d026e4 (patch)
treedcb470ea28150336a808c7afc23407f17109f83e /ext/etc
parent58d3ef7778a1bfb9116f282f9cc70224cd943217 (diff)
merge revision(s) 60071: [Backport #13953] [Backport #13954] [Backport #13955] [Backport #13957]
ext: check if null byte is contained [ruby-dev:50267] [Bug #13953] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@61456 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/etc')
-rw-r--r--ext/etc/etc.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/ext/etc/etc.c b/ext/etc/etc.c
index 0d2d9af7cb..f871d9c2ae 100644
--- a/ext/etc/etc.c
+++ b/ext/etc/etc.c
@@ -215,9 +215,10 @@ etc_getpwnam(VALUE obj, VALUE nam)
{
#ifdef HAVE_GETPWENT
struct passwd *pwd;
+ const char *p = StringValueCStr(nam);
- SafeStringValue(nam);
- pwd = getpwnam(RSTRING_PTR(nam));
+ rb_check_safe_obj(nam);
+ pwd = getpwnam(p);
if (pwd == 0) rb_raise(rb_eArgError, "can't find user for %"PRIsVALUE, nam);
return setup_passwd(pwd);
#else
@@ -458,9 +459,10 @@ etc_getgrnam(VALUE obj, VALUE nam)
{
#ifdef HAVE_GETGRENT
struct group *grp;
+ const char *p = StringValueCStr(nam);
- SafeStringValue(nam);
- grp = getgrnam(RSTRING_PTR(nam));
+ rb_check_safe_obj(nam);
+ grp = getgrnam(p);
if (grp == 0) rb_raise(rb_eArgError, "can't find group for %"PRIsVALUE, nam);
return setup_group(grp);
#else