Print out zero length string properly.
[oweals/openssl.git] / crypto / asn1 / asn1_par.c
index 37aa6b415eb3dc1fa7ed6b49d4548c010ae10fd0..938a7915ef083dd17225dc72ac15a4fbf563fdca 100644 (file)
@@ -70,9 +70,8 @@ static int asn1_print_info(BIO *bp, int tag, int xclass, int constructed,
             int indent)
        {
        static const char fmt[]="%-18s";
-       static const char fmt2[]="%2d %-15s";
        char str[128];
-       const char *p,*p2=NULL;
+       const char *p;
 
        if (constructed & V_ASN1_CONSTRUCTED)
                p="cons: ";
@@ -88,16 +87,13 @@ static int asn1_print_info(BIO *bp, int tag, int xclass, int constructed,
                BIO_snprintf(str,sizeof str,"cont [ %d ]",tag);
        else if ((xclass & V_ASN1_APPLICATION) == V_ASN1_APPLICATION)
                BIO_snprintf(str,sizeof str,"appl [ %d ]",tag);
-       else p = ASN1_tag2str(tag);
-
-       if (p2 != NULL)
-               {
-               if (BIO_printf(bp,fmt2,tag,p2) <= 0) goto err;
-               }
+       else if (tag > 30)
+               BIO_snprintf(str,sizeof str,"<ASN1 %d>",tag);
        else
-               {
-               if (BIO_printf(bp,fmt,p) <= 0) goto err;
-               }
+               p = ASN1_tag2str(tag);
+
+       if (BIO_printf(bp,fmt,p) <= 0)
+               goto err;
        return(1);
 err:
        return(0);