From 1852b4a8660ee8e71997f81cee4903c6eb23f306 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 30 Sep 2017 08:35:23 +0000 Subject: ext: check if null byte is contained [ruby-dev:50267] [Bug #13953] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60071 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/etc/etc.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'ext/etc') diff --git a/ext/etc/etc.c b/ext/etc/etc.c index 5d964ba518..46857c62c7 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 -- cgit v1.2.3