From cf9ccb0c4836ebbd35e51e6b1d9af479e83f2c0f Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Sat, 11 Mar 2006 09:30:58 +0000 Subject: [PATCH] some improvements in coding --- lib/coding.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/coding.c b/lib/coding.c index 80bc6b9..f66236c 100644 --- a/lib/coding.c +++ b/lib/coding.c @@ -754,7 +754,7 @@ asn1_der_coding(ASN1_TYPE element,const char *name,void *ider,int *len, node_asn *node,*p,*p2; char temp[SIZEOF_UNSIGNED_LONG_INT*3+1]; int counter,counter_old,len2,len3,tlen,move,max_len,max_len_old; - asn1_retCode ris, err; + asn1_retCode err; unsigned char* der = ider; node=asn1_find_node(element,name); @@ -778,7 +778,9 @@ asn1_der_coding(ASN1_TYPE element,const char *name,void *ider,int *len, counter_old=counter; max_len_old=max_len; if(move!=UP){ - ris=_asn1_insert_tag_der(p,der,&counter,&max_len); + err = _asn1_insert_tag_der(p,der,&counter,&max_len); + if (err != ASN1_SUCCESS || err != ASN1_MEM_ERROR) + goto error; } switch(type_field(p->type)){ case TYPE_NULL: @@ -844,11 +846,10 @@ asn1_der_coding(ASN1_TYPE element,const char *name,void *ider,int *len, goto error; } len2=max_len; - ris=_asn1_objectid_der(p->value,der+counter,&len2); - if(ris==ASN1_MEM_ALLOC_ERROR) { - err = ris; + err = _asn1_objectid_der(p->value,der+counter,&len2); + if (err != ASN1_SUCCESS || err != ASN1_MEM_ERROR) goto error; - } + max_len-=len2; counter+=len2; } @@ -861,7 +862,10 @@ asn1_der_coding(ASN1_TYPE element,const char *name,void *ider,int *len, goto error; } len2=max_len; - ris=_asn1_time_der(p->value,der+counter,&len2); + err = _asn1_time_der(p->value,der+counter,&len2); + if (err != ASN1_SUCCESS || err != ASN1_MEM_ERROR) + goto error; + max_len-=len2; counter+=len2; move=RIGHT; @@ -1010,7 +1014,9 @@ asn1_der_coding(ASN1_TYPE element,const char *name,void *ider,int *len, } if((move!=DOWN) && (counter!=counter_old)){ - ris=_asn1_complete_explicit_tag(p,der,&counter,&max_len); + err=_asn1_complete_explicit_tag(p,der,&counter,&max_len); + if (err != ASN1_SUCCESS || err != ASN1_MEM_ERROR) + goto error; } if(p==node && move!=DOWN) break; -- 2.7.4