]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
updated to the new libtasn1.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Thu, 11 Nov 2004 08:36:09 +0000 (08:36 +0000)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Thu, 11 Nov 2004 08:36:09 +0000 (08:36 +0000)
lib/minitasn1/coding.c
lib/minitasn1/decoding.c
lib/minitasn1/parser_aux.c
lib/minitasn1/structure.c

index 1503f6a08b05f8202d2593cbad62b8c703b112c8..0e922f09318f197be4acd23ecb9cbdbbecdabfa0 100644 (file)
@@ -246,7 +246,7 @@ _asn1_objectid_der(unsigned char *str,unsigned char *der,int *der_len)
 
   max_len=*der_len;
 
-  temp=(char *) _asn1_alloca(strlen(str)+2);
+  temp= (char *) _asn1_alloca(strlen(str)+2);
   if(temp==NULL) return ASN1_MEM_ALLOC_ERROR;
 
   strcpy(temp, str);
@@ -742,7 +742,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,move,max_len,max_len_old;
+  int counter,counter_old,len2,len3,tlen,move,max_len,max_len_old;
   asn1_retCode ris;
   unsigned char* der = ider;
 
@@ -875,7 +875,9 @@ asn1_der_coding(ASN1_TYPE element,const char *name,void *ider,int *len,
     case TYPE_SEQUENCE: case TYPE_SET: 
       if(move!=UP){
        _asn1_ltostr(counter,temp);
-       _asn1_set_value(p,temp,strlen(temp)+1);
+       tlen = strlen(temp);
+       if (tlen > 0)
+          _asn1_set_value(p,temp,tlen+1);
        if(p->down==NULL){
          move=UP;
          continue;
@@ -910,7 +912,10 @@ asn1_der_coding(ASN1_TYPE element,const char *name,void *ider,int *len,
     case TYPE_SEQUENCE_OF: case TYPE_SET_OF:
       if(move!=UP){
        _asn1_ltostr(counter,temp);
-       _asn1_set_value(p,temp,strlen(temp)+1);
+       tlen = strlen(temp);
+       
+       if (tlen > 0)
+          _asn1_set_value(p,temp,tlen+1);
        p=p->down;
        while((type_field(p->type)==TYPE_TAG) || (type_field(p->type)==TYPE_SIZE)) p=p->right;
        if(p->right){
index b58735cd1664bc227c1971bce53f2210af3814ab..cc01253e9c2bd8fae5aaa773f8b5956278238830 100644 (file)
@@ -514,7 +514,7 @@ asn1_der_decoding(ASN1_TYPE *element,const void *ider,int len,
 {
   node_asn *node,*p,*p2,*p3;
   char temp[128];
-  int counter,len2,len3,len4,move,ris;
+  int counter,len2,len3,len4,move,ris,tlen;
   unsigned char class,*temp2;
   unsigned int tag;
   int indefinite, result;
@@ -686,7 +686,9 @@ asn1_der_decoding(ASN1_TYPE *element,const void *ider,int len,
        break;
       case TYPE_OBJECT_ID:
        _asn1_get_objectid_der(der+counter,&len2, temp, sizeof(temp));
-       _asn1_set_value(p,temp,strlen(temp)+1);
+       tlen = strlen(temp);
+       if( tlen > 0)
+          _asn1_set_value(p,temp,tlen+1);
        counter+=len2;
        move=RIGHT;
       break;
@@ -696,7 +698,9 @@ asn1_der_decoding(ASN1_TYPE *element,const void *ider,int len,
                asn1_delete_structure(element);
                return result;
        }
-       _asn1_set_value(p,temp,strlen(temp)+1);
+       tlen = strlen(temp);
+       if (tlen > 0)
+          _asn1_set_value(p,temp,tlen+1);
        counter+=len2;
        move=RIGHT;
        break;
@@ -743,7 +747,9 @@ asn1_der_decoding(ASN1_TYPE *element,const void *ider,int len,
          counter+=len2;
          if(len3>0){
            _asn1_ltostr(counter+len3,temp);
-           _asn1_set_value(p,temp,strlen(temp)+1);
+           tlen = strlen(temp);
+           if (tlen > 0)
+              _asn1_set_value(p,temp,tlen+1);
            move=DOWN; 
          }
          else if(len3==0){
@@ -801,7 +807,10 @@ asn1_der_decoding(ASN1_TYPE *element,const void *ider,int len,
          if(len3){
            if(len3>0){ /* definite length method */
            _asn1_ltostr(counter+len3,temp);
-           _asn1_set_value(p,temp,strlen(temp)+1);
+           tlen = strlen(temp);
+           
+           if (tlen > 0)
+              _asn1_set_value(p,temp,tlen+1);
            }
            else { /* indefinite length method */
              _asn1_set_value(p,"-1",3);              
@@ -938,7 +947,7 @@ asn1_der_decoding_element(ASN1_TYPE *structure,const char *elementName,
   node_asn *node,*p,*p2,*p3,*nodeFound=ASN1_TYPE_EMPTY;
   char temp[128],currentName[MAX_NAME_SIZE*10],*dot_p,*char_p;
   int nameLen=MAX_NAME_SIZE*10-1,state;
-  int counter,len2,len3,len4,move,ris;
+  int counter,len2,len3,len4,move,ris, tlen;
   unsigned char class,*temp2;
   unsigned int tag;
   int indefinite, result;
@@ -1153,7 +1162,10 @@ asn1_der_decoding_element(ASN1_TYPE *structure,const char *elementName,
       case TYPE_OBJECT_ID:
        if(state==FOUND){
          _asn1_get_objectid_der(der+counter,&len2, temp, sizeof(temp));
-         _asn1_set_value(p,temp,strlen(temp)+1);
+         tlen = strlen(temp);
+         
+         if (tlen > 0)
+            _asn1_set_value(p,temp,tlen+1);
          
          if(p==nodeFound) state=EXIT;
        }
@@ -1173,7 +1185,9 @@ asn1_der_decoding_element(ASN1_TYPE *structure,const char *elementName,
                return result;
          }
 
-         _asn1_set_value(p,temp,strlen(temp)+1);
+         tlen = strlen(temp);
+         if (tlen > 0)
+            _asn1_set_value(p,temp,tlen+1);
          
          if(p==nodeFound) state=EXIT;
        }
@@ -1249,7 +1263,10 @@ asn1_der_decoding_element(ASN1_TYPE *structure,const char *elementName,
            counter+=len2;
            if(len3>0){
              _asn1_ltostr(counter+len3,temp);
-             _asn1_set_value(p,temp,strlen(temp)+1);
+             tlen = strlen(temp);
+             
+             if(tlen > 0)
+                 _asn1_set_value(p,temp,tlen+1);
              move=DOWN;
            }
            else if(len3==0){
@@ -1301,7 +1318,10 @@ asn1_der_decoding_element(ASN1_TYPE *structure,const char *elementName,
            counter+=len2;
            if(len3){
              _asn1_ltostr(counter+len3,temp);
-             _asn1_set_value(p,temp,strlen(temp)+1);
+             tlen = strlen(temp);
+             
+             if (tlen > 0)
+                 _asn1_set_value(p,temp,tlen+1);
              p2=p->down;
              while((type_field(p2->type)==TYPE_TAG) || (type_field(p2->type)==TYPE_SIZE)) p2=p2->right;
              if(p2->right==NULL) _asn1_append_sequence_set(p);
index 0ce68ca266a68300f44d69ae6d34220eb4c3514a..1da3ea611a8961b066bd403c272f16faf729ae30 100644 (file)
@@ -519,7 +519,7 @@ _asn1_expand_object_id(ASN1_TYPE node)
 {
   node_asn *p,*p2,*p3,*p4,*p5;
   char name_root[MAX_NAME_SIZE],name2[2*MAX_NAME_SIZE+1];
-  int move;
+  int move, tlen;
  
   if(node==NULL) return ASN1_ELEMENT_NOT_FOUND;
 
@@ -548,7 +548,9 @@ _asn1_expand_object_id(ASN1_TYPE node)
              if(type_field(p4->type)==TYPE_CONSTANT){
                p5=_asn1_add_node_only(TYPE_CONSTANT);
                _asn1_set_name(p5,p4->name);
-               _asn1_set_value(p5,p4->value,strlen(p4->value)+1);
+               tlen = strlen( p4->value);
+               if (tlen > 0)
+                   _asn1_set_value(p5,p4->value,tlen+1);
                if(p2==p){
                  _asn1_set_right(p5,p->down);
                  _asn1_set_down(p,p5);
@@ -612,7 +614,9 @@ _asn1_expand_object_id(ASN1_TYPE node)
            }
            p4=p4->right;
          }
-         _asn1_set_value(p2,name2,strlen(name2)+1);
+         tlen = strlen(name2);
+         if (tlen > 0)
+             _asn1_set_value(p2,name2,tlen+1);
        }
       }
       move=DOWN;
index 9eda93373fd199a59e7bef144a3484735e652043..97f11d4cb9535c10daef4dc828de203d40ff76e0 100644 (file)
@@ -342,7 +342,7 @@ node_asn *
 _asn1_copy_structure3(node_asn *source_node)
 {
   node_asn *dest_node,*p_s,*p_d,*p_d_prev;
-  int len,len2,move;
+  int len,len2,move, tlen;
 
   if(source_node==NULL) return NULL;
 
@@ -365,7 +365,10 @@ _asn1_copy_structure3(node_asn *source_node)
          _asn1_set_value(p_d,p_s->value,len+len2);
          break;
        default:
-         _asn1_set_value(p_d,p_s->value,strlen(p_s->value)+1);
+         tlen = strlen(p_s->value);
+         
+         if (tlen > 0)
+             _asn1_set_value(p_d,p_s->value,tlen+1);
        }
       }
       move=DOWN;
@@ -419,7 +422,7 @@ asn1_retCode
 _asn1_type_choice_config(node_asn *node)
 {
   node_asn *p,*p2,*p3,*p4;
-  int move;
+  int move,tlen;
  
   if(node==NULL) return ASN1_ELEMENT_NOT_FOUND;
 
@@ -438,7 +441,9 @@ _asn1_type_choice_config(node_asn *node)
            while(p3){
              if(type_field(p3->type)==TYPE_TAG){
                p4=_asn1_add_node_only(p3->type);
-               _asn1_set_value(p4,p3->value,strlen(p3->value)+1);
+               tlen = strlen(p3->value);
+               if (tlen > 0)
+                   _asn1_set_value(p4,p3->value,tlen+1);
                _asn1_set_right(p4,p2->down);
                _asn1_set_down(p2,p4);
              }