Re: MIME boundary question recap

"Barton E. Schaefer" <schaefer@z-code.com> Fri, 10 February 1995 20:56 UTC

Received: from ietf.nri.reston.va.us by IETF.CNRI.Reston.VA.US id aa09168; 10 Feb 95 15:56 EST
Received: from CNRI.Reston.VA.US by IETF.CNRI.Reston.VA.US id aa09164; 10 Feb 95 15:56 EST
Received: from dimacs.rutgers.edu by CNRI.Reston.VA.US id aa14700; 10 Feb 95 15:56 EST
Received: (from daemon@localhost) by dimacs.rutgers.edu (8.6.9+bestmx+oldruq+newsunq+grosshack/8.6.9) id MAA03895 for ietf-822-list; Fri, 10 Feb 1995 12:46:17 -0500
Received: from moon.nbn.com (moon.nbn.com [199.4.65.1]) by dimacs.rutgers.edu (8.6.9+bestmx+oldruq+newsunq+grosshack/8.6.9) with ESMTP id MAA03889 for <ietf-822@dimacs.rutgers.edu>; Fri, 10 Feb 1995 12:46:13 -0500
Received: from z-code.com (uucp@localhost) by moon.nbn.com (8.6.4/8.6.4) with UUCP id JAA01092; Fri, 10 Feb 1995 09:45:33 -0800
Received: from zyrcon (zyrcon.z-code.com [192.82.56.36]) by z-code.z-code.com (8.6.9/8.6.9) with SMTP id JAA19023; Fri, 10 Feb 1995 09:25:04 -0800
Received: by zyrcon (920330.SGI/920502.SGI) for @z-code.z-code.com:ietf-822@dimacs.rutgers.edu id AA03616; Fri, 10 Feb 95 09:27:57 -0800
Sender: ietf-archive-request@IETF.CNRI.Reston.VA.US
From: "Barton E. Schaefer" <schaefer@z-code.com>
Message-Id: <9502100927.ZM3614@zyrcon.z-code.com>
Date: Fri, 10 Feb 1995 09:27:56 -0800
In-Reply-To: Ned Freed <NED@innosoft.com> "MIME boundary question recap" (Feb 9, 11:47pm)
References: <01HMV4IMI4HW8ZF4FO@INNOSOFT.COM>
Reply-To: schaefer@z-code.com
X-Mailer: Z-Mail (3.3dev.208 08feb95)
To: Ned Freed <NED@innosoft.com>
Subject: Re: MIME boundary question recap
Cc: Mr Rhys Weatherley <rhys@fit.qut.edu.au>, Steve Dorner <sdorner@qualcomm.com>, ietf-822@dimacs.rutgers.edu
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"

On Feb 9, 11:47pm, Ned Freed wrote:
} Subject: MIME boundary question recap
}
} (2) The current draft of the final specification changed this so that
}     one boundary cannot be a leading substring of another. This was agreed
}     to on the list in October and was changed to make it possible to allow
}     for trailing whitespace without an arbitrary amount of lookahead.
} 
} (5) We need to decide how to proceed. I don't see how we can have it both
}     ways -- we either allow trailing whitespace on boundary lines or we
}     allow one boundary string to be a leading substring of another. Which
}     one is more important? Requiring infinite lookahead is not acceptable in
}     my opinion.
} 
} (7) Speaking as an implementor, I could go either way on this. I don't
}     generate boundaries the way Eudora does, and I currently support
}     Eudora's boundaries.

Same here.

I confess to a philosophical preference for Eudora's position, and Keith
has a point that in practice the lookahead shouldn't need to be more than
1000 characters.  However, I can also appreciate the position that a
boundary string shouldn't be a substring (whether a leading substring or
otherwise) of any string intended to be encapsulated by that boundary.
(That is, I see less to quarrel with in the case of

    --inner-outer
    --inner
    --inner--
    --inner-outer--

than in the reverse case; but the distinction is not worth worrying about.)

Philosphy aside, I generally agree with Keith's suggestion:

On Feb 10, 10:08am, Keith Moore wrote:
} Subject: Re: MIME boundary question recap
}
} For robustness, I suggest:
} 
} (a) MIME composers MUST avoid emitting boundaries such that 
}     one boundary is a substring of another.  (However, MIME readers
}     MUST NOT refuse to process a message because it has such
}     boundaries.)

If this is going to "break" metamail and several other widely-deployed
reader implementations, I think I'd want to drop that parenthetical.

} (b) MIME readers MUST ignore trailing whitespace in lines that 
}     are less than 1000 characters long, when examining a line
}     to see if it is a boundary marker.   (However, since a
}     boundary marker can contain no more than 74 characters before any
}     padding whitespace, including leading and trailing '-' 
}     characters, any line with non-white-space characters after
}     the 74th position cannot be a boundary marker.)

Right; that is, the lookahead problem occurs only when there are an
arbitrary number of whitespace characters following a successful prefix
match against a boundary string.  Any prefix match followed by a non-
whitespace character is clearly not a match (so perhaps metamail is
already "broken" by any interpretation).
 

-- 
Bart Schaefer                     Vice President, Technology, Z-Code Software
schaefer@z-code.com               Division of Network Computing Devices, Inc.