| Bug #2181 | imap_fetchstructure() don't set body->type when message is TYPETEXT | ||||
|---|---|---|---|---|---|
| Submitted: | 28 Aug 1999 11:42am UTC | Modified: | 14 May 2001 2:33pm UTC | ||
| From: | tsukada at fminn dot nagano dot nagano dot jp | Assigned to: | vlad | ||
| Status: | Closed | Category: | IMAP related | ||
| Version: | 4.0 | OS: | Linux RH6.0 | ||
[15 Nov 1999 10:11am UTC] joey at cvs dot php dot net
Marc- Hope you don't mind if I assign this?
[10 Feb 2001 1:41pm UTC] jimw@php.net
refiled against 4.0 imap. no idea if it is still an issue.
[7 May 2001 2:48pm UTC] vlad@php.net
This shouldn't be a problem for imap_fetchstructure() now, because that code is not there. However, this code is present in imap_bodystruct(), which does not seem to be documented (?). I'll try to see if I can create a message that will trigger that problem, and, if I can trigger it, I'll fix it. If anyone else gets to it before me, I have a suggestion about the patch submited by tsukada@fminn.nagano.nagano.jp - the "less-than" sign in "body->type < TYPEMAX" and "body->encoding < ENCMAX" whould really be "less or equal" (that's what I understod from reading imap/c-client/imap4r1.c)
[7 May 2001 2:51pm UTC] derick@php.net
I'll assign this one to you then.
[14 May 2001 2:33pm UTC] vlad@php.net
Actually, this was still a problem, I just missed it. 7-bit encodings and plain-text body types both should be represented by setting body->type and body->encoding to zero, respectively. They were not set at all. Now they are. The impact should be minimal because zero is the same as an unset variable, as far as most people are concerned in this case.

please check below patch --- imap.c.orig Sat Aug 28 23:43:06 1999 +++ imap.c Sun Aug 29 00:08:24 1999 @@ -2087,8 +2087,8 @@ PARAMETER *par, *dpar; PART *part; - if(body->type) add_property_long( arg, "type", body->type ); - if(body->encoding) add_property_long( arg, "encoding", body->encoding ); + if(body->type < TYPEMAX) add_property_long( arg, "type", body->type ); + if(body->encoding < ENCMAX) add_property_long( arg, "encoding", body->encoding ); if ( body->subtype ){ add_property_long( arg, "ifsubtype", 1 ); @@ -2711,8 +2711,8 @@ } body=mail_body(imap_le_struct->imap_stream, msg->value.lval, section->value.str.val); - if(body->type) add_property_long( return_value, "type", body->type ); - if(body->encoding) add_property_long( return_value, "encoding", body->encoding ); + if(body->type < TYPEMAX) add_property_long( return_value, "type", body->type ); + if(body->encoding < ENCMAX) add_property_long( return_value, "encoding", body->encoding ); if ( body->subtype ){ add_property_long( return_value, "ifsubtype", 1 );