for (;;) {
if (!ossl_isalpha(*s)) {
PROPerr(PROP_F_PARSE_NAME, PROP_R_NOT_AN_IDENTIFIER);
+ ERR_add_error_data(2, "HERE-->", *t);
return 0;
}
do {
s++;
}
name[i] = '\0';
- *t = skip_space(s);
- if (!err) {
- *idx = ossl_property_name(ctx, name, user_name && create);
- return 1;
+ if (err) {
+ PROPerr(PROP_F_PARSE_NAME, PROP_R_NAME_TOO_LONG);
+ ERR_add_error_data(2, "HERE-->", *t);
+ return 0;
}
- PROPerr(PROP_F_PARSE_NAME, PROP_R_NAME_TOO_LONG);
- return 0;
+ *t = skip_space(s);
+ *idx = ossl_property_name(ctx, name, user_name && create);
+ return 1;
}
static int parse_number(const char *t[], PROPERTY_DEFINITION *res)
} while (ossl_isdigit(*s));
if (!ossl_isspace(*s) && *s != '\0' && *s != ',') {
PROPerr(PROP_F_PARSE_NUMBER, PROP_R_NOT_A_DECIMAL_DIGIT);
+ ERR_add_error_data(2, "HERE-->", *t);
return 0;
}
*t = skip_space(s);
} while (ossl_isxdigit(*++s));
if (!ossl_isspace(*s) && *s != '\0' && *s != ',') {
PROPerr(PROP_F_PARSE_HEX, PROP_R_NOT_AN_HEXADECIMAL_DIGIT);
+ ERR_add_error_data(2, "HERE-->", *t);
return 0;
}
*t = skip_space(s);
} while (ossl_isdigit(*++s) && *s != '9' && *s != '8');
if (!ossl_isspace(*s) && *s != '\0' && *s != ',') {
PROPerr(PROP_F_PARSE_OCT, PROP_R_NOT_AN_OCTAL_DIGIT);
+ ERR_add_error_data(2, "HERE-->", *t);
return 0;
}
*t = skip_space(s);
s++;
}
if (*s == '\0') {
+ char buf[2] = { 0, 0 };
+
PROPerr(PROP_F_PARSE_STRING,
PROP_R_NO_MATCHING_STRING_DELIMETER);
+ buf[0] = delim;
+ ERR_add_error_data(3, "HERE-->", buf, *t);
return 0;
}
v[i] = '\0';
- *t = skip_space(s + 1);
- if (err)
+ if (err) {
PROPerr(PROP_F_PARSE_STRING, PROP_R_STRING_TOO_LONG);
- else
+ ERR_add_error_data(2, "HERE-->", *t);
+ } else {
res->v.str_val = ossl_property_value(ctx, v, create);
+ }
+ *t = skip_space(s + 1);
res->type = PROPERTY_TYPE_STRING;
return !err;
}
}
if (!ossl_isspace(*s) && *s != '\0' && *s != ',') {
PROPerr(PROP_F_PARSE_UNQUOTED, PROP_R_NOT_AN_ASCII_CHARACTER);
+ ERR_add_error_data(2, "HERE-->", s);
return 0;
}
v[i] = 0;
- *t = skip_space(s);
- if (err)
+ if (err) {
PROPerr(PROP_F_PARSE_UNQUOTED, PROP_R_STRING_TOO_LONG);
- else
+ ERR_add_error_data(2, "HERE-->", *t);
+ } else {
res->v.str_val = ossl_property_value(ctx, v, create);
+ }
+ *t = skip_space(s);
res->type = PROPERTY_TYPE_STRING;
return !err;
}
s = skip_space(s);
done = *s == '\0';
while (!done) {
+ const char *start = s;
+
prop = OPENSSL_malloc(sizeof(*prop));
if (prop == NULL)
goto err;
prop->oper = PROPERTY_OPER_EQ;
if (prop->name_idx == 0) {
PROPerr(PROP_F_OSSL_PARSE_PROPERTY, PROP_R_PARSE_FAILED);
+ ERR_add_error_data(2, "Unknown name HERE-->", start);
goto err;
}
if (match_ch(&s, '=')) {
if (!parse_value(ctx, &s, prop, 1)) {
PROPerr(PROP_F_OSSL_PARSE_PROPERTY, PROP_R_NO_VALUE);
+ ERR_add_error_data(2, "HERE-->", start);
goto err;
}
} else {
}
if (*s != '\0') {
PROPerr(PROP_F_OSSL_PARSE_PROPERTY, PROP_R_TRAILING_CHARACTERS);
+ ERR_add_error_data(2, "HERE-->", s);
goto err;
}
res = stack_to_property_list(sk);
}
if (*s != '\0') {
PROPerr(PROP_F_OSSL_PARSE_QUERY, PROP_R_TRAILING_CHARACTERS);
+ ERR_add_error_data(2, "HERE-->", s);
goto err;
}
res = stack_to_property_list(sk);