Hi,
I trying to use openssl stack to store structure, but I have an issue that
latest push always rewrites previous entries, so I have multiple same
entries.
Now I am not sure if I have the push or the print written wrong.
I have a following code:
Header file:
typedef struct MyStrucS_st
{
int type;
union {
X509 *cert;
ASN1_OBJECT *object;
} value;
} MyStrucS;
DECLARE_STACK_OF(MyStrucS)
DECLARE_ASN1_FUNCTIONS(MyStrucS)
Source file:
ASN1_CHOICE(MyStrucS) = {
ASN1_EXP(MyStrucS, value.cert, X509, 0),
ASN1_EXP(MyStrucS, value.object, ASN1_OBJECT, 1)
} ASN1_CHOICE_END(MyStrucS)
IMPLEMENT_ASN1_FUNCTIONS(MyStrucS)
STACK_OF(MyStrucS) *mystruc = NULL;
mystruc = sk_MyStrucS_new_null();
static int add_new(STACK_OF(MyStrucS) *mystruc, X509 *cert)
{
RefStruc *certRef0 = RefStruc_new();
certRef0 = make_me_new_ref(cert);
if(!sk_MyStrucS_push(mystruc, certRef0)) BIO_printf(bio_err, "push
error\n");
int t_type;
for(t_type = 0; t_type < sk_MyStrucS_num(mystruc);t_type++)
{
BIO_printf(bio_err, "%i\n", t_type);
X509_print(bio_err, sk_MyStrucS_value(mystruc,
t_type)->value.cert);
}
}
certRef0 contains right information everytime, I checked that.
I am calling this function as:
add_new(mystruc, cert1);
<some code - no using anything above>
Add_new(mystruc, cert2);
After first call, I can see info from cert1 printed out.
But when it print stack after 2nd call, both 2 positions are containing info
from cert2, means I get same info written twice.
Any help ? I am lost at this point.
I am using OpenSSl 0.9.8l
Peter
__________ Information from ESET Smart Security, version of virus signature
database 4662 (20091205) __________
The message was checked by ESET Smart Security.
http://www.eset.com
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [email protected]