cur_token = * index;
if (cur_token + 1 < length) {
- if ((message[cur_token] == 'U') && (message[cur_token] == 'T')) {
+ if ((message[cur_token] == 'U') && (message[cur_token + 1] == 'T')) {
* result = TRUE;
* index = cur_token + 2;
struct mailimf_group * group;
int r;
int res;
+ clist * list;
cur_token = * index;
break;
case MAILIMF_ERROR_PARSE:
r = mailimf_cfws_parse(message, length, &cur_token);
- if ((r != MAILIMF_NO_ERROR) && (r != MAILIMF_ERROR_PARSE))
- return r;
+ if ((r != MAILIMF_NO_ERROR) && (r != MAILIMF_ERROR_PARSE)) {
+ res = r;
+ goto free_display_name;
+ }
+ list = clist_new();
+ if (list == NULL) {
+ res = MAILIMF_ERROR_MEMORY;
+ goto free_display_name;
+ }
+ mailbox_list = mailimf_mailbox_list_new(list);
+ if (mailbox_list == NULL) {
+ res = MAILIMF_ERROR_MEMORY;
+ clist_free(list);
+ goto free_display_name;
+ }
break;
default:
- return r;
+ res = r;
+ goto free_display_name;
}
r = mailimf_semi_colon_parse(message, length, &cur_token);
&resent_date);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_FROM:
&resent_from);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_SENDER:
&resent_sender);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_TO:
&resent_to);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_CC:
&resent_cc);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_BCC:
&resent_bcc);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
case MAILIMF_RESENT_FIELD_MSG_ID:
&resent_msg_id);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_resent;
}
break;
default:
res = MAILIMF_ERROR_PARSE;
- goto err;
+ goto free_resent;
}
resent_field = mailimf_resent_field_new(type, resent_date,
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_FROM:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_SENDER:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_REPLY_TO:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_TO:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_CC:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_BCC:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_MESSAGE_ID:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_IN_REPLY_TO:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_REFERENCES:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_SUBJECT:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_COMMENTS:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_KEYWORDS:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RETURN_PATH:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_DATE:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_FROM:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_SENDER:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_TO:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_CC:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_BCC:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
case MAILIMF_FIELD_RESENT_MSG_ID:
}
else {
res = r;
- goto err;
+ goto free_fields;
}
break;
}
&optional_field);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_fields;
}
type = MAILIMF_FIELD_OPTIONAL_FIELD;
subject, comments, keywords, optional_field);
if (field == NULL) {
res = MAILIMF_ERROR_MEMORY;
- goto free_field;
+ goto free_fields;
}
* result = field;
return MAILIMF_NO_ERROR;
- free_field:
+ free_fields:
if (return_path != NULL)
mailimf_return_free(return_path);
if (resent_date != NULL)
mailimf_keywords_free(keywords);
if (optional_field != NULL)
mailimf_optional_field_free(optional_field);
- err:
return res;
}
size_t * index,
char ** result)
{
- char * msgid;
+ char * msgid = NULL;
size_t cur_token;
int r;
return r;
r = mailimf_parse_unwanted_msg_id(message, length, &cur_token);
- if (r != MAILIMF_NO_ERROR)
+ if (r != MAILIMF_NO_ERROR) {
+ free(msgid);
return r;
+ }
* result = msgid;
* index = cur_token;
r = mailimf_greater_parse(message, length, &cur_token);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto err;
+ goto free_addr_spec;
}
path = mailimf_path_new(addr_spec);
return MAILIMF_NO_ERROR;
free_addr_spec:
- if (addr_spec == NULL)
+ if (addr_spec != NULL)
mailimf_addr_spec_free(addr_spec);
err:
return res;
int r;
int res;
+ name = NULL;
+ value = NULL;
+ optional_field = NULL;
+
cur_token = * index;
r = mailimf_field_name_parse(message, length, &cur_token, &name);
r = mailimf_colon_parse(message, length, &cur_token);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto free_name;
+ goto free_fields;
}
r = mailimf_unstructured_parse(message, length, &cur_token, &value);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto free_name;
+ goto free_fields;
}
r = mailimf_unstrict_crlf_parse(message, length, &cur_token);
if (r != MAILIMF_NO_ERROR) {
res = r;
- goto free_value;
+ goto free_fields;
}
optional_field = mailimf_optional_field_new(name, value);
if (optional_field == NULL) {
res = MAILIMF_ERROR_MEMORY;
- goto free_value;
+ goto free_fields;
}
* result = optional_field;
return MAILIMF_NO_ERROR;
- free_value:
- mailimf_unstructured_free(value);
- free_name:
- mailimf_field_name_free(name);
+ free_fields:
+ if (value)
+ mailimf_unstructured_free(value);
+ if (name)
+ mailimf_field_name_free(name);
+
err:
return res;
}
struct mailimf_in_reply_to * in_reply_to;
struct mailimf_references * references;
struct mailimf_subject * subject;
- struct mailimf_optional_field * optional_field;
struct mailimf_field * field;
int guessed_type;
int r;
in_reply_to = NULL;
references = NULL;
subject = NULL;
- optional_field = NULL;
guessed_type = guess_header_type(message, length, cur_token);
type = MAILIMF_FIELD_NONE;
NULL, NULL, NULL,
orig_date, from, sender, reply_to, to,
cc, bcc, message_id, in_reply_to, references,
- subject, NULL, NULL, optional_field);
+ subject, NULL, NULL, NULL);
if (field == NULL) {
res = MAILIMF_ERROR_MEMORY;
- goto free_field;
+ goto free_fields;
}
* result = field;
return MAILIMF_NO_ERROR;
- free_field:
+ free_fields:
if (orig_date != NULL)
mailimf_orig_date_free(orig_date);
if (from != NULL)
mailimf_references_free(references);
if (subject != NULL)
mailimf_subject_free(subject);
- if (optional_field != NULL)
- mailimf_optional_field_free(optional_field);
err:
return res;
}