Fix for sk_insert bug: it never worked properly.
Allow explicit tag asn macros to handle indefinite length constructed stuff: without this certain "certificates" can't be read in.
This commit is contained in:
@@ -213,8 +213,16 @@ err:\
|
|||||||
if (Tinf & 0x80) \
|
if (Tinf & 0x80) \
|
||||||
{ c.error=ERR_R_BAD_ASN1_OBJECT_HEADER; \
|
{ c.error=ERR_R_BAD_ASN1_OBJECT_HEADER; \
|
||||||
c.line=__LINE__; goto err; } \
|
c.line=__LINE__; goto err; } \
|
||||||
|
if (Tinf == (V_ASN1_CONSTRUCTED+1)) \
|
||||||
|
Tlen = c.slen - (c.p - c.q) - 2; \
|
||||||
if (func(&(r),&c.p,Tlen) == NULL) \
|
if (func(&(r),&c.p,Tlen) == NULL) \
|
||||||
{ c.line=__LINE__; goto err; } \
|
{ c.line=__LINE__; goto err; } \
|
||||||
|
if (Tinf == (V_ASN1_CONSTRUCTED+1)) { \
|
||||||
|
Tlen = c.slen - (c.p - c.q); \
|
||||||
|
if(!ASN1_check_infinite_end(&c.p, Tlen)) \
|
||||||
|
{ c.error=ERR_R_MISSING_ASN1_EOS; \
|
||||||
|
c.line=__LINE__; goto err; } \
|
||||||
|
}\
|
||||||
c.slen-=(c.p-c.q); \
|
c.slen-=(c.p-c.q); \
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,10 +238,18 @@ err:\
|
|||||||
if (Tinf & 0x80) \
|
if (Tinf & 0x80) \
|
||||||
{ c.error=ERR_R_BAD_ASN1_OBJECT_HEADER; \
|
{ c.error=ERR_R_BAD_ASN1_OBJECT_HEADER; \
|
||||||
c.line=__LINE__; goto err; } \
|
c.line=__LINE__; goto err; } \
|
||||||
|
if (Tinf == (V_ASN1_CONSTRUCTED+1)) \
|
||||||
|
Tlen = c.slen - (c.p - c.q) - 2; \
|
||||||
if (d2i_ASN1_SET(&(r),&c.p,Tlen,(char *(*)())func, \
|
if (d2i_ASN1_SET(&(r),&c.p,Tlen,(char *(*)())func, \
|
||||||
(void (*)())free_func, \
|
(void (*)())free_func, \
|
||||||
b,V_ASN1_UNIVERSAL) == NULL) \
|
b,V_ASN1_UNIVERSAL) == NULL) \
|
||||||
{ c.line=__LINE__; goto err; } \
|
{ c.line=__LINE__; goto err; } \
|
||||||
|
if (Tinf == (V_ASN1_CONSTRUCTED+1)) { \
|
||||||
|
Tlen = c.slen - (c.p - c.q); \
|
||||||
|
if(!ASN1_check_infinite_end(&c.p, Tlen)) \
|
||||||
|
{ c.error=ERR_R_MISSING_ASN1_EOS; \
|
||||||
|
c.line=__LINE__; goto err; } \
|
||||||
|
}\
|
||||||
c.slen-=(c.p-c.q); \
|
c.slen-=(c.p-c.q); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -161,7 +161,7 @@ int loc;
|
|||||||
|
|
||||||
f=(char **)st->data;
|
f=(char **)st->data;
|
||||||
t=(char **)&(st->data[1]);
|
t=(char **)&(st->data[1]);
|
||||||
for (i=st->num; i>loc; i--)
|
for (i=st->num; i>=loc; i--)
|
||||||
t[i]=f[i];
|
t[i]=f[i];
|
||||||
|
|
||||||
#ifdef undef /* no memmove on sunos :-( */
|
#ifdef undef /* no memmove on sunos :-( */
|
||||||
|
Reference in New Issue
Block a user