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:
parent
a98c65338d
commit
9863041298
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user