From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Amritpal Singh Newsgroups: gmane.emacs.bugs Subject: bug#63831: fix bug with failed inflation of .el.gz files in src/decompress.c Date: Fri, 2 Jun 2023 11:09:35 +0530 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000ebea4205fd1efa18" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38101"; mail-complaints-to="usenet@ciao.gmane.io" To: 63831@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Jun 02 09:53:22 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q4zb6-0009fg-Ei for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 02 Jun 2023 09:53:20 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q4zap-0003VZ-Ey; Fri, 02 Jun 2023 03:53:03 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q4zao-0003SD-KZ for bug-gnu-emacs@gnu.org; Fri, 02 Jun 2023 03:53:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1q4zao-0005Jw-AN for bug-gnu-emacs@gnu.org; Fri, 02 Jun 2023 03:53:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1q4zao-0000zl-1R for bug-gnu-emacs@gnu.org; Fri, 02 Jun 2023 03:53:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Amritpal Singh Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 02 Jun 2023 07:53:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 63831 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.16856923393752 (code B ref -1); Fri, 02 Jun 2023 07:53:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 2 Jun 2023 07:52:19 +0000 Original-Received: from localhost ([127.0.0.1]:39028 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q4za5-0000yO-55 for submit@debbugs.gnu.org; Fri, 02 Jun 2023 03:52:19 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:35798) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q4xVs-0005ir-Sb for submit@debbugs.gnu.org; Fri, 02 Jun 2023 01:39:50 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q4xVs-00071d-L9 for bug-gnu-emacs@gnu.org; Fri, 02 Jun 2023 01:39:48 -0400 Original-Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1q4xVr-0001gx-1I for bug-gnu-emacs@gnu.org; Fri, 02 Jun 2023 01:39:48 -0400 Original-Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-4f004cc54f4so2223468e87.3 for ; Thu, 01 Jun 2023 22:39:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685684384; x=1688276384; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=JjOeClnpJTAgoR/ffvaetzfqhCKpKaZRpK8ZPuoeZxE=; b=QsXsjKJbXqpBqmJgxLRudiBdAn2D2dUFXDluegv3v90zyqv2azQ+uvzQXOrZtUAyjV 1yAYfM85MdjLWUl6+/nu5CRKV8yOerz0cNP2yqiLv0WPPP+tl+AyOwEuLmmt54UNtewn 48PlQAiwbDSDIPN1Muw3d7Hf26O5l9PhyK9ouGTILUip3vIOnYmNQgEYox0NJ4RIQjes IlDUplembW3qI8oha5ulRTDyhg8PWNaZCUl4TmXJ/tmnSq/X4AKzRMMMMh3/ZDA55srN 09IIODDTDvLBxrJgPHkN+DHidY0Tc4bjIjY/Mw9fBiPrMfrz9uCaqfzkukq9JwMdnOFx dtHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685684384; x=1688276384; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=JjOeClnpJTAgoR/ffvaetzfqhCKpKaZRpK8ZPuoeZxE=; b=U7YKPEU+OqHxeBSgr1qj4oAnbG5dNy4MwPaju85XzJ2c7Mz9DCix5/k6lzQuId9whI i/2eNcm7izi0OC4bCU0q4XkP7xe+msu4Hp6GrNx/yXUPSn1VRKb+MvRZ/Ol2Gay/y4u0 UaVxUDbylSRrgHWJmoZvHR53hPJKLnbgM/l67+8Ymog+KUF4bUNlipHcC6ABbgJRJ0T5 rZWu+0EuJdQmRh/iyf3xSPOIT7dGaqhtBjMM2WH+S7VT/BeBlq7eh4kDy4wm+VuHpA5Q YMHERGjYcxPDjd/PVk92HkSyx8ucsfpkidrRKAg6c9ebZsk1wlGNuHd3ohR1+JsJ+h0d rMBA== X-Gm-Message-State: AC+VfDyihmMWJPcmW/97GBE41OfvF+6uYm1dfWUSbwqgmw4VFR9CzBEb sr6JEKF6jis6MN+dKdy0TxMX/OSdCX1vYwKjkCWgx8kZ8srKhw== X-Google-Smtp-Source: ACHHUZ48QkygmT+rb0iaKnvZhoaBJ2FTwwdoEf7dZQZjR2MpZO9J9XnXVvNmNqOE/mlTZ72cjNju//z7pJSnzcvG8/E= X-Received: by 2002:ac2:4896:0:b0:4f4:cda3:8c99 with SMTP id x22-20020ac24896000000b004f4cda38c99mr1119973lfc.42.1685684384150; Thu, 01 Jun 2023 22:39:44 -0700 (PDT) Received-SPF: pass client-ip=2a00:1450:4864:20::12d; envelope-from=icy.amrit@gmail.com; helo=mail-lf1-x12d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Fri, 02 Jun 2023 03:52:15 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:262745 Archived-At: --000000000000ebea4205fd1efa18 Content-Type: text/plain; charset="UTF-8" Bug Report: Compile emacs with system's gzip program set to `pigz`. Run emacs and then `M-x eww RET` Expected behavior: Enter URL prompt in mini-buffer Actual behavior: hashing failed '/usr/share/emacs/30.0.50/lisp/gnus/gnus.el.gz' Report: The bug has been reproduced on emacs version 29.0.91 and HEAD which seems to be at 30.0.50. Later, a copy of the aforementioned file was saved somewhere else and the program was uninstalled. Then emacs was recompiled with system's gzip program set to GNU gzip and the initial steps were repeated and the expected behavior was the result. This lead to believing either that there's a bug with how zlib's `inflate()` handles archives or emacs code was having an issue with archives files. The hashes for gz archives generated with different programs were as follows > md5sum gnus-gzip.el.gz edb3d0ffba7f19ff1d4ec3f889609e8a gnus-gzip.el.gz > md5sum gnus.el.gz 985deaaec6a5845ac8d6bd9648957b50 gnus.el.gz And when uncompressing these archives, the resulting file was the same and the hash for the files was the same (omitted for brevity). Now after logging some code in $EMACS_REPO/src/decompress.c, it was learned that in the pigz specific case, `inflate()` was returning Z_BUF_ERROR(-5) which is an indicator for zstream's either `avail_in` or `avail_out` fields are 0. Observing the code in `$EMACS_REPO/src/decompress.c` L154: } while (!stream.avail_out); only checks stream.avail_out and not stream.avail_in which also might have been set to 0. A special case here can be constructed where `avail_in` is 0, and the code keeps looping even though our input buffer is empty and thus causing a Z_BUF_ERROR. Placing a simple check for it fixes the bug in pigz's gz archives case and does not cause any issue with gzip archives. A simple patch with a fix is attached below, I would also like to thank a friend of mine cortexauth whom also helped during my debug sessions. --000000000000ebea4205fd1efa18 Content-Type: text/x-diff; charset="US-ASCII"; name="0001-check-stream.avail_in-as-well-when-looping-to-inflat.patch" Content-Disposition: attachment; filename="0001-check-stream.avail_in-as-well-when-looping-to-inflat.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lie4y7190 RnJvbSBmZmE4ZTE0MGVkOGIwOTNjNjBmMTIzOGJmNzY5MzVlODE1ZTgyYTIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBpY2ViYXJmIDxzeXNncmFtbWVyQHByb3Rvbm1haWwuY29tPgpE YXRlOiBGcmksIDIgSnVuIDIwMjMgMTA6NTE6MjEgKzA1MzAKU3ViamVjdDogW1BBVENIXSBjaGVj ayBzdHJlYW0uYXZhaWxfaW4gYXMgd2VsbCB3aGVuIGxvb3BpbmcgdG8gaW5mbGF0ZSBnegogYXJj aGl2ZQoKLS0tCiBzcmMvZGVjb21wcmVzcy5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2RlY29tcHJlc3MuYyBi L3NyYy9kZWNvbXByZXNzLmMKaW5kZXggNmVmMTdkYi4uMTYyZjYxNiAxMDA2NDQKLS0tIGEvc3Jj L2RlY29tcHJlc3MuYworKysgYi9zcmMvZGVjb21wcmVzcy5jCkBAIC0xNTEsNyArMTUxLDcgQEAg bWQ1X2d6X3N0cmVhbSAoRklMRSAqc291cmNlLCB2b2lkICpyZXNibG9jaykKIAlyZXR1cm4gLTE7 CiAKICAgICAgIGFjY3VtdWxhdGVfYW5kX3Byb2Nlc3NfbWQ1IChvdXQsIE1ENV9CTE9DS1NJWkUg LSBzdHJlYW0uYXZhaWxfb3V0LCAmY3R4KTsKLSAgICB9IHdoaWxlICghc3RyZWFtLmF2YWlsX291 dCk7CisgICAgfSB3aGlsZSAoc3RyZWFtLmF2YWlsX2luICYmICFzdHJlYW0uYXZhaWxfb3V0KTsK IAogICB9IHdoaWxlIChyZXMgIT0gWl9TVFJFQU1fRU5EKTsKIAotLSAKMi40MC4xCgo= --000000000000ebea4205fd1efa18--