Re: [VCARDDAV] [calsify] Escaping dquote in a parameter value

Cyrus Daboo <cyrus@daboo.name> Wed, 20 June 2012 13:53 UTC

Return-Path: <cyrus@daboo.name>
X-Original-To: vcarddav@ietfa.amsl.com
Delivered-To: vcarddav@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CA38721F85FB; Wed, 20 Jun 2012 06:53:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -101.901
X-Spam-Level:
X-Spam-Status: No, score=-101.901 tagged_above=-999 required=5 tests=[AWL=0.698, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gCu81Sph813s; Wed, 20 Jun 2012 06:53:40 -0700 (PDT)
Received: from daboo.name (daboo.name [173.13.55.49]) by ietfa.amsl.com (Postfix) with ESMTP id 387A421F8634; Wed, 20 Jun 2012 06:53:40 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1]) by daboo.name (Postfix) with ESMTP id 3498729B7ED1; Wed, 20 Jun 2012 09:53:38 -0400 (EDT)
X-Virus-Scanned: amavisd-new at daboo.name
Received: from daboo.name ([127.0.0.1]) by localhost (daboo.name [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id EFzT85bx3EAy; Wed, 20 Jun 2012 09:53:31 -0400 (EDT)
Received: from caldav.corp.apple.com (unknown [17.45.162.46]) by daboo.name (Postfix) with ESMTPSA id 17FA629B7EBF; Wed, 20 Jun 2012 09:53:30 -0400 (EDT)
Date: Wed, 20 Jun 2012 09:53:28 -0400
From: Cyrus Daboo <cyrus@daboo.name>
To: Jack <jack@jackpot.uk.net>
Message-ID: <A1C922200A67743844DDA5CD@caldav.corp.apple.com>
In-Reply-To: <4FE1742C.1030806@jackpot.uk.net>
References: <50174924F12AC68AE58D5384@cyrus.local> <4FE1742C.1030806@jackpot.uk.net>
X-Mailer: Mulberry/4.1.0a3 (Mac OS X)
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"; format="flowed"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; size="1723"
Cc: Calsify <calsify@ietf.org>, vcarddav@ietf.org
Subject: Re: [VCARDDAV] [calsify] Escaping dquote in a parameter value
X-BeenThere: vcarddav@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: IETF vcarddav wg mailing list <vcarddav.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/vcarddav>, <mailto:vcarddav-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/vcarddav>
List-Post: <mailto:vcarddav@ietf.org>
List-Help: <mailto:vcarddav-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/vcarddav>, <mailto:vcarddav-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 20 Jun 2012 13:53:40 -0000

Hi Jack,

--On June 20, 2012 7:56:44 AM +0100 Jack <jack@jackpot.uk.net> wrote:

>> I ruled out use of \ because some parsers erroneously eat that, and
>> it would also be tempting to use \" which is definitely not possible
>>  because the dquote cannot appear.
>
> However "\" is already specified in RFC2445 as the escape character in
> TEXT (4.3.11).
>
> That section specifies that a DQUOTE is not to appear in a TEXT; but it
> also specifies that a ";" shall not appear in a TEXT, and then goes on
> to specify that a ";" must be escaped thus: "\;". So I read it as saying
> (as clearly as anything is said in that document) that a DQUOTE should
> be escaped thus: "\"".

First please use RFC5545 as your reference not RFC2445.

Second, the syntax for a parameter value, as opposed to a property value, 
is different. Here is the 5545 syntax:

     param-value   = paramtext / quoted-string

     paramtext     = *SAFE-CHAR

     quoted-string = DQUOTE *QSAFE-CHAR DQUOTE

     QSAFE-CHAR    = WSP / %x21 / %x23-7E / NON-US-ASCII
     ; Any character except CONTROL and DQUOTE

     SAFE-CHAR     = WSP / %x21 / %x23-2B / %x2D-39 / %x3C-7E
                   / NON-US-ASCII
     ; Any character except CONTROL, DQUOTE, ";", ":", ","

So a DQUOTE is not allowed in either paramtext or quoted-string, and there 
is no affordance for any kind of escape character.

It is also true that CONTROL characters are not allowed. Now that I think 
of it, there have been situations I have come across where line feeds at 
least were needed in a parameter value. That suggest that perhaps my 
proposed ^ escape mechanism should be broadened to allow some specific 
CONTROLs, e.g.:

^n  - LF
^r  - CR
^t  - HTAB



-- 
Cyrus Daboo