Fixes for BOOL handling: produce errors for invalid string for mini-compiler,

correctly encode FALSE for BOOL in ASN1_TYPE.
This commit is contained in:
Dr. Stephen Henson 2006-01-19 17:16:56 +00:00
parent 00fe865dbe
commit 25a58453ff
2 changed files with 10 additions and 5 deletions

View 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); ASN1err(ASN1_F_ASN1_STR2TYPE, ASN1_R_NOT_ASCII_FORMAT);
goto bad_form; goto bad_form;
} }
vtmp.name = NULL;
vtmp.section = NULL;
vtmp.value = (char *)str; vtmp.value = (char *)str;
if (!X509V3_get_value_bool(&vtmp, &atmp->value.boolean)) if (!X509V3_get_value_bool(&vtmp, &atmp->value.boolean))
{ {

View file

@ -618,11 +618,14 @@ int asn1_ex_i2c(ASN1_VALUE **pval, unsigned char *cout, int *putype,
tbool = (ASN1_BOOLEAN *)pval; tbool = (ASN1_BOOLEAN *)pval;
if (*tbool == -1) if (*tbool == -1)
return -1; return -1;
/* Default handling if value == size field then omit */ if (it->utype != V_ASN1_ANY)
if (*tbool && (it->size > 0)) {
return -1; /* Default handling if value == size field then omit */
if (!*tbool && !it->size) if (*tbool && (it->size > 0))
return -1; return -1;
if (!*tbool && !it->size)
return -1;
}
c = (unsigned char)*tbool; c = (unsigned char)*tbool;
cont = &c; cont = &c;
len = 1; len = 1;