[rohc] IPR... again...

"West, Mark" <mark.a.west@roke.co.uk> Tue, 02 September 2003 13:33 UTC

Received: from optimus.ietf.org (ietf.org [132.151.1.19] (may be forged)) by ietf.org (8.9.1a/8.9.1a) with ESMTP id JAA23089 for <rohc-archive@odin.ietf.org>; Tue, 2 Sep 2003 09:33:57 -0400 (EDT)
Received: from localhost.localdomain ([127.0.0.1] helo=www1.ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 19uBHo-0000fG-OU for rohc-archive@odin.ietf.org; Tue, 02 Sep 2003 09:33:33 -0400
Received: (from exim@localhost) by www1.ietf.org (8.12.8/8.12.8/Submit) id h82DXW5j002550 for rohc-archive@odin.ietf.org; Tue, 2 Sep 2003 09:33:32 -0400
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 19u9nG-0004CA-41 for rohc-web-archive@optimus.ietf.org; Tue, 02 Sep 2003 07:57:54 -0400
Received: from optimus.ietf.org (ietf.org [132.151.1.19] (may be forged)) by ietf.org (8.9.1a/8.9.1a) with ESMTP id HAA14086 for <rohc-web-archive@ietf.org>; Tue, 2 Sep 2003 07:57:49 -0400 (EDT)
Received: from localhost.localdomain ([127.0.0.1] helo=www1.ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 19u6FD-0000cL-Og; Tue, 02 Sep 2003 04:10:31 -0400
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 19u1tW-0006VE-V1 for rohc@optimus.ietf.org; Mon, 01 Sep 2003 23:31:50 -0400
Received: from ietf-mx (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id XAA11694 for <rohc@ietf.org>; Mon, 1 Sep 2003 23:31:44 -0400 (EDT)
Received: from ietf-mx ([132.151.6.1]) by ietf-mx with esmtp (Exim 4.12) id 19u1tT-00059N-00 for rohc@ietf.org; Mon, 01 Sep 2003 23:31:47 -0400
Received: from rsys001a.roke.co.uk ([193.118.192.110]) by ietf-mx with esmtp (Exim 4.12) id 19taFz-0003e6-00 for rohc@ietf.org; Sun, 31 Aug 2003 18:01:11 -0400
Received: by rsys001a.roke.co.uk with Internet Mail Service (5.5.2653.19) id <QY19X0HB>; Sun, 31 Aug 2003 23:00:34 +0100
Received: from localhost (orion.roke.co.uk [193.118.192.66]) by rsys002a.roke.co.uk with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2653.13) id Q9Z6Z0FH; Sun, 31 Aug 2003 23:00:31 +0100
From: "West, Mark" <mark.a.west@roke.co.uk>
To: rohc@ietf.org
Date: Sun, 31 Aug 2003 23:00:30 +0100
Message-ID: <Pine.WNT.4.56.0308312241130.1348@maw-laptop.roke.co.uk>
X-X-Sender: maw1@maw-laptop.roke.co.uk
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset="US-ASCII"
Subject: [rohc] IPR... again...
Sender: rohc-admin@ietf.org
Errors-To: rohc-admin@ietf.org
X-BeenThere: rohc@ietf.org
X-Mailman-Version: 2.0.12
Precedence: bulk
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/rohc>, <mailto:rohc-request@ietf.org?subject=unsubscribe>
List-Id: Robust Header Compression <rohc.ietf.org>
List-Post: <mailto:rohc@ietf.org>
List-Help: <mailto:rohc-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/rohc>, <mailto:rohc-request@ietf.org?subject=subscribe>

Hi all,

Gosh... guess what..?  It seems that the IPR situation hasn't been
resolved yet...

Ok, well, here's one suggestion: let's ignore context repair (which, it
has to be said, probably counts as novel) and just use the CRC to verify
correct decompression in its most basic form...

You want a reason?  Oh, ok!  Here are some 'quotes' from 'zlib' (you'll
note that this was written in '95/'96 and, who'd've thunk it, contains a
CRC over the uncompressed data...):

	/* gzio.c -- IO on .gz files
	 * Copyright (C) 1995-1996 Jean-loup Gailly.
	 * For conditions of distribution and use, see copyright notice in zlib.h
	 */

<snip>

	typedef struct gz_stream {
	    z_stream stream;
	    int      z_err;   /* error code for last stream operation */
	    int      z_eof;   /* set if end of input file */
	    FILE     *file;   /* .gz file */
	    Byte     *inbuf;  /* input buffer */
	    Byte     *outbuf; /* output buffer */
	    uLong    crc;     /* crc32 of uncompressed data */
	    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	          This might be relevant...

	    char     *msg;    /* error message */
	    char     *path;   /* path name for debugging only */
	    int      transparent; /* 1 if input file is not a .gz
					file */
	    char     mode;    /* 'w' or 'r' */
	} gz_stream;

<snip>

        if (s->z_err == Z_STREAM_END) {
            /* Check CRC and original size */
            s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
            start = s->stream.next_out;

            if (getLong(s) != s->crc || getLong(s) != s->stream.total_out)
            {
                s->z_err = Z_DATA_ERROR;
            } else {
                /* Check for concatenated .gz files: */
                check_header(s);
                if (s->z_err == Z_OK) {
                    inflateReset(&(s->stream));
                    s->crc = crc32(0L, Z_NULL, 0);
                }
            }
        }

Now, I know I'm *really* slow on the uptake, but isn't this a CRC over the
uncompressed data to verify decompression..?!

Oh, and before anyone points out the fact: yes, I do know that IPR is
claimed on computing the static / dynamic part of the CRC.  Hmmmm...
sounds like an implementation issue to me.  Ok -- let's try this:
everyone raise your right hand & repeat after me: "I do solemnly swear
that I shall not stoop to any nasty implementation enhancements like
caching the static part of the CRC computation without first consulting my
tame patent attorney."  There, that should fix it..?

Comments..?!

;-/

Mark.

_______________________________________________
Rohc mailing list
Rohc@ietf.org
https://www1.ietf.org/mailman/listinfo/rohc