Fixes for BOOL handling: produce errors for invalid string for mini-compiler,
authorDr. Stephen Henson <steve@openssl.org>
Thu, 19 Jan 2006 17:16:56 +0000 (17:16 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Thu, 19 Jan 2006 17:16:56 +0000 (17:16 +0000)
correctly encode FALSE for BOOL in ASN1_TYPE.

crypto/asn1/asn1_gen.c
crypto/asn1/tasn_enc.c

index dd5853c02fd12e47cbc8e298355bb5c3b6cb2ac9..aaa2c7eb3f3529fe6064d502dc984e6ab574ecae 100644 (file)
@@ -660,6 +660,8 @@ static ASN1_TYPE *asn1_str2type(const char *str, int format, int utype)
                        ASN1err(ASN1_F_ASN1_STR2TYPE, ASN1_R_NOT_ASCII_FORMAT);
                        goto bad_form;
                        }
+               vtmp.name = NULL;
+               vtmp.section = NULL;
                vtmp.value = (char *)str;
                if (!X509V3_get_value_bool(&vtmp, &atmp->value.boolean))
                        {
index 60b29ce822f783a989275f0e5b9475f7ed40743a..685401e163e982a777a053aed1e3ee37fbe4bbfa 100644 (file)
@@ -618,11 +618,14 @@ int asn1_ex_i2c(ASN1_VALUE **pval, unsigned char *cout, int *putype,
                tbool = (ASN1_BOOLEAN *)pval;
                if (*tbool == -1)
                        return -1;
-               /* Default handling if value == size field then omit */
-               if (*tbool && (it->size > 0))
-                       return -1;
-               if (!*tbool && !it->size)
-                       return -1;
+               if (it->utype != V_ASN1_ANY)
+                       {
+                       /* Default handling if value == size field then omit */
+                       if (*tbool && (it->size > 0))
+                               return -1;
+                       if (!*tbool && !it->size)
+                               return -1;
+                       }
                c = (unsigned char)*tbool;
                cont = &c;
                len = 1;