[quicwg/base-drafts] QPACK Required Insert Count decoding pseudocode does not enforce that encoding is valid (#2892)

Bence Béky <notifications@github.com> Fri, 12 July 2019 00:39 UTC

Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id A6DCF1200C7 for <quic-issues@ietfa.amsl.com>; Thu, 11 Jul 2019 17:39:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.595
X-Spam-Status: No, score=-6.595 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FROM_EXCESS_BASE64=0.001, HTML_IMAGE_ONLY_28=1.404, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id 9h9FNZubNtHY for <quic-issues@ietfa.amsl.com>; Thu, 11 Jul 2019 17:39:54 -0700 (PDT)
Received: from out-22.smtp.github.com (out-22.smtp.github.com []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8238E120073 for <quic-issues@ietf.org>; Thu, 11 Jul 2019 17:39:54 -0700 (PDT)
Date: Thu, 11 Jul 2019 17:39:53 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1562891993; bh=nbr6ajitB/SjKyscSxDZr45BO20xp4M5mkiiNBh38+U=; h=Date:From:Reply-To:To:Cc:Subject:List-ID:List-Archive:List-Post: List-Unsubscribe:From; b=Krq1adXLFtjr2DjA8jjUtgYF1/eiWd6IQzO4c0FozMIIJ1IeTF1JEyrd9kVDH88YV E9xSRlFWJymOH0skH2+j5Oj1+HnRTRm9XNQ0cf+mD29HDt9/Ucw+7pn1oAeHH/wykc GpARPaNN4Ow92tncFeKJk7KpFrA8hXrXsuBi9cgc=
From: Bence Béky <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJK2OWULYLVJZ5ETKH553GUEVTEVBNHHBXWDFAA@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/2892@github.com>
Subject: [quicwg/base-drafts] QPACK Required Insert Count decoding pseudocode does not enforce that encoding is valid (#2892)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5d27d6d962632_76a93f90a0acd968208124c"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: bencebeky
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/v0gpCyDZvKUkqVrl-CEKz11_Yyc>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 12 Jul 2019 00:39:57 -0000

Consider the following example:
MaxEntries = 8
TotalNumberOfInserts = 4
EncInsertCount = 1

Applying the decoder pseudocode yields ReqInsertCount = 0 without signalling an error.  However, the encoder should have encoded that as EncInsertCount = 0, therefore the decoder should signal an error according to the text: "If the decoder encounters a value of EncodedInsertCount that could not have been produced by a conformant encoder, it MUST treat this as a connection error of type HTTP_QPACK_DECOMPRESSION_FAILED."

The text is considered normative and the pseudocode is not.  To help decoder implementations be conformant, the pseudocode should be updated to signal an error in this case.  Adding the following two lines would be a correct solution:

    if ReqInsertCount == 0:

However, this introduces an extra branch.  It would be nice to find a more elegant decoding algorithm.

You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub: