ossl_pkcs7.c: consider length

* ext/openssl/ossl_pkcs7.c (ossl_pkcs7_sym2typeid): consider
  length to compare.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47047 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2014-08-03 15:19:16 +00:00
parent a98c65338d
commit 9863041298

View File

@ -362,6 +362,7 @@ ossl_pkcs7_sym2typeid(VALUE sym)
{ {
int i, ret = Qnil; int i, ret = Qnil;
const char *s; const char *s;
size_t l;
static struct { static struct {
const char *name; const char *name;
@ -376,14 +377,13 @@ ossl_pkcs7_sym2typeid(VALUE sym)
{ NULL, 0 }, { NULL, 0 },
}; };
if (RB_TYPE_P(sym, T_SYMBOL)) { if (RB_TYPE_P(sym, T_SYMBOL)) sym = rb_sym2str(sym);
sym = rb_sym2str(sym); else StringValue(sym);
s = RSTRING_PTR(sym); RSTRING_GETMEM(sym, s, l);
}
else s = StringValuePtr(sym);
for(i = 0; i < numberof(p7_type_tab); i++){ for(i = 0; i < numberof(p7_type_tab); i++){
if(p7_type_tab[i].name == NULL) if(p7_type_tab[i].name == NULL)
ossl_raise(ePKCS7Error, "unknown type \"%s\"", s); ossl_raise(ePKCS7Error, "unknown type \"%s\"", s);
if(strlen(p7_type_tab[i].name) != l) continue;
if(strcmp(p7_type_tab[i].name, s) == 0){ if(strcmp(p7_type_tab[i].name, s) == 0){
ret = p7_type_tab[i].nid; ret = p7_type_tab[i].nid;
break; break;