version 1.1.1.1.2.2, 2012/03/09 15:34:37
|
version 1.1.1.1.2.4, 2012/03/10 00:26:04
|
Line 169 hdrValue(const char *str, size_t len, const char **end
|
Line 169 hdrValue(const char *str, size_t len, const char **end
|
|
|
e = str + len; |
e = str + len; |
while (str < e) { |
while (str < e) { |
if ((crlf = findtextpos(str, e - str, CRLF, strlen(CRLF)))) { | if (!(crlf = findtextpos(str, e - str, CRLF, strlen(CRLF)))) { |
www_SetErr(EBADMSG, "Bad MIME format message"); | www_SetErr(EBADMSG, "Bad header format of MIME part"); |
return NULL; |
return NULL; |
} |
} |
|
|
Line 328 mime_parseMultiPart(const char *str, size_t len, const
|
Line 328 mime_parseMultiPart(const char *str, size_t len, const
|
mime_t *mime = NULL; |
mime_t *mime = NULL; |
struct iovec bd[2]; |
struct iovec bd[2]; |
struct tagMIME *m, *old = NULL; |
struct tagMIME *m, *old = NULL; |
const char *next; | const char *next = NULL; |
|
|
if (!str | !bdtag) { |
if (!str | !bdtag) { |
www_SetErr(EINVAL, "String or boundary tag is NULL"); |
www_SetErr(EINVAL, "String or boundary tag is NULL"); |
Line 372 mime_parseMultiPart(const char *str, size_t len, const
|
Line 372 mime_parseMultiPart(const char *str, size_t len, const
|
len -= strlen(strstr(bd[0].iov_base, "--")); |
len -= strlen(strstr(bd[0].iov_base, "--")); |
} |
} |
|
|
while (42) { | while (len > 0) { |
m = malloc(sizeof(struct tagMIME)); |
m = malloc(sizeof(struct tagMIME)); |
if (!m) { |
if (!m) { |
LOGERR; |
LOGERR; |
Line 420 mime_parseMultiPart(const char *str, size_t len, const
|
Line 420 mime_parseMultiPart(const char *str, size_t len, const
|
len -= bd[0].iov_len; |
len -= bd[0].iov_len; |
*/ |
*/ |
|
|
|
free(bd[1].iov_base); |
|
free(bd[0].iov_base); |
|
|
if (end) |
if (end) |
*end = str; |
*end = str; |
return mime; |
return mime; |
Line 584 mime_readPart(struct tagMIME * __restrict m, const cha
|
Line 587 mime_readPart(struct tagMIME * __restrict m, const cha
|
if (!ct || www_cmptype(ct, "multipart")) { |
if (!ct || www_cmptype(ct, "multipart")) { |
/* not multi part, assign like body element */ |
/* not multi part, assign like body element */ |
m->mime_body.iov_base = malloc(len - (eoh - str) + 1); |
m->mime_body.iov_base = malloc(len - (eoh - str) + 1); |
|
if (!m->mime_body.iov_base) { |
|
LOGERR; |
|
freeHeader(m); |
|
return -1; |
|
} |
memcpy(m->mime_body.iov_base, eoh, len - (eoh - str)); |
memcpy(m->mime_body.iov_base, eoh, len - (eoh - str)); |
((char*) m->mime_body.iov_base)[len - (eoh - str)] = 0; |
((char*) m->mime_body.iov_base)[len - (eoh - str)] = 0; |
m->mime_body.iov_len = len - (eoh - str) + 1; |
m->mime_body.iov_len = len - (eoh - str) + 1; |
} else { |
} else { |
/* multi part */ |
/* multi part */ |
attr = www_parseAttributes(&ct); |
attr = www_parseAttributes(&ct); |
if (!attr) | if (!attr) { |
| freeHeader(m); |
return -1; |
return -1; |
|
} |
bd.iov_base = bd_begin(www_getAttribute(attr, "boundary")); |
bd.iov_base = bd_begin(www_getAttribute(attr, "boundary")); |
bd.iov_len = strlen(bd.iov_base); |
bd.iov_len = strlen(bd.iov_base); |
eb = findtextpos(eoh, len - (eoh - str), bd.iov_base, bd.iov_len); |
eb = findtextpos(eoh, len - (eoh - str), bd.iov_base, bd.iov_len); |
Line 603 mime_readPart(struct tagMIME * __restrict m, const cha
|
Line 613 mime_readPart(struct tagMIME * __restrict m, const cha
|
if (!m->mime_prolog.iov_base) { |
if (!m->mime_prolog.iov_base) { |
LOGERR; |
LOGERR; |
www_freeAttributes(&attr); |
www_freeAttributes(&attr); |
|
freeHeader(m); |
return -1; |
return -1; |
} |
} |
memcpy(m->mime_prolog.iov_base, eoh, eb - eoh); |
memcpy(m->mime_prolog.iov_base, eoh, eb - eoh); |
Line 619 mime_readPart(struct tagMIME * __restrict m, const cha
|
Line 630 mime_readPart(struct tagMIME * __restrict m, const cha
|
if (!m->mime_epilog.iov_base) { |
if (!m->mime_epilog.iov_base) { |
LOGERR; |
LOGERR; |
www_freeAttributes(&attr); |
www_freeAttributes(&attr); |
|
freeHeader(m); |
return -1; |
return -1; |
} |
} |
memcpy(m->mime_epilog.iov_base, str, len - (eoh - str)); |
memcpy(m->mime_epilog.iov_base, str, len - (eoh - str)); |
Line 626 mime_readPart(struct tagMIME * __restrict m, const cha
|
Line 638 mime_readPart(struct tagMIME * __restrict m, const cha
|
m->mime_epilog.iov_len = len - (eoh - str) + 1; |
m->mime_epilog.iov_len = len - (eoh - str) + 1; |
|
|
} |
} |
|
|
|
www_freeAttributes(&attr); |
} |
} |
|
|
www_freeAttributes(&attr); |
|
return 0; |
return 0; |
} |
} |
|
|