From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 05 15:52:52 2022 Received: (at submit) by debbugs.gnu.org; 5 Feb 2022 20:52:52 +0000 Received: from localhost ([127.0.0.1]:35676 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGS3A-0007N8-1G for submit@debbugs.gnu.org; Sat, 05 Feb 2022 15:52:52 -0500 Received: from lists.gnu.org ([209.51.188.17]:40720) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGS37-0007Mz-Sp for submit@debbugs.gnu.org; Sat, 05 Feb 2022 15:52:50 -0500 Received: from eggs.gnu.org ([209.51.188.92]:47738) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nGS37-0007uk-1A for bug-gnu-emacs@gnu.org; Sat, 05 Feb 2022 15:52:49 -0500 Received: from [2607:f8b0:4864:20::234] (port=36416 helo=mail-oi1-x234.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nGS34-0006pC-S5 for bug-gnu-emacs@gnu.org; Sat, 05 Feb 2022 15:52:48 -0500 Received: by mail-oi1-x234.google.com with SMTP id s185so12828012oie.3 for ; Sat, 05 Feb 2022 12:52:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=ObvYVpN8WncJIHUqYCoL3qayqJueQperKQxSDDcNOMk=; b=WsD5bwGNZZ/ouaKoIHIWjBUGcaLuQUc2g2fMpWV6BUFT6Mzn0GD5RF0tTv84jEpNe5 x/c69FyYfkq3ktviUj6kFWbvrI2HRwpaGG6WG4oKtbX+Jph2RInoxKlDroYE25AbaPiR Vgkd3koH4WTdQjfoilWND7cyHvBwM/yah1ZGnLCLWsYr/UK6ySxCj20BSMGsQVVtHpO1 EoCPh5Sxc/PTpu7t6uBmODF6KMP9hB20myEXEsqltgyEVIW7wnWfch7JjgT/VSfui2ms /iBx5sbaI5fBqeTsdPTqkWx4iXJQLYmm4HWKyljzRJHBx1KgNYkqG2p1pA3NNzjzueB3 y6Dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ObvYVpN8WncJIHUqYCoL3qayqJueQperKQxSDDcNOMk=; b=zgjwK7O5tMmyx1HrlybKxkqznSe37RsRDr4b6jmCkk3Dg1BzyLPOT+8+HSvaNMrEps IVLmVGgjj92R2yldhxDotdfRuKwhynJ2cXe55jTGWOHjOW5W+qKl+7z2X+OAlJkSMFNt glVPMOO1SkoMCKZ9P5HXLiV/khjRqZTyZzPq5qiZ8KeVetiNen0ZDYF1+i2I1VWYPZSI as5sLmevcsR+VdhDvMAU5hsF1ua4rtwnIYgSRCDVTQ7ikVcVsG0MOUfA9QV0Q1Sr2/Je LB+jYVJ3Q8kt0hC5f7GOeZhcdRkQdAO9Q9t/nC0Sy8orO5CeuvWx0R0bUHZ9yPd7nU1/ yJ4Q== X-Gm-Message-State: AOAM532AlnUACTRXdnPEqDBgIIeH9M5k7Y2h6WvgylheF5+9HyMVFekj pdT8H01Oy7SqFgPZ+nH1pygef2aNIcDECHHX4bTGLYft/Ew= X-Google-Smtp-Source: ABdhPJw14hsEbxMrVNQTjq+fol3NUK25NjAfOQkMSFeh9m4FkQkXIre7J5aX0/9jGrfcDK9tAu+LH/qRT/tpGyYx8i4= X-Received: by 2002:a05:6808:2228:: with SMTP id bd40mr2340992oib.335.1644094355820; Sat, 05 Feb 2022 12:52:35 -0800 (PST) MIME-Version: 1.0 From: Ioannis Kappas Date: Sat, 5 Feb 2022 20:52:25 +0000 Message-ID: Subject: 29.0.50; ansi colorization process could block indefinetly on stray ESC char To: bug-gnu-emacs@gnu.org Content-Type: text/plain; charset="UTF-8" X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::234 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::234; envelope-from=ioannis.kappas@gmail.com; helo=mail-oi1-x234.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) Hi, there appears to be an issue with `ansi-color-apply' that a stray ESC control character in the input string can block the colorization process (with-temp-buffer (ansi-color-apply "a\ebc")) ;; => "a" (with-temp-buffer (concat (ansi-color-apply "a\ebc") (ansi-color-apply "xyz"))) ;; => "a" The process is blocked at character a the rest are never printed. It can only resume when a CSI seq (i.e. one starting with ESC [) appears in the stream (with-temp-buffer (concat (ansi-color-apply "ab\ec") (ansi-color-apply "x\e[yz"))) ;; => "ab^[cxz" or, using a valid SGR as an example (with-temp-buffer (concat (ansi-color-apply "ab\ec") (ansi-color-apply "x\e[3myz"))) ;; => #("ab^[cxyz" 5 7 ;; (font-lock-face italic)) This behavior can pose serious problems to applications which support ansi colorisation of their output streams, but otherwise treat ESC as any other control character (e.g. REPLs colorizing their output with ansi-color but they also like to display any other character). Their output might be blocked indefinitely when an ESC character appears in their output. My expectation is that a character sequence starting with ESC which is not being part of an SGR sequence, should be output immediately, rather than treated as a potential SGR sequence (which by definition it can never be) blocking further processing. e.g. (with-temp-buffer (ansi-color-apply "a\ebc")) ;; => "a^[bc" Analysis to follow. Thanks In GNU Emacs 29.0.50 (build 1, x86_64-w64-mingw32) Repository revision: 3a8e140ad115633791d057bd10998d80c33e6dc7 Repository branch: master Windowing system distributor 'Microsoft Corp.', version 10 From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 05 16:00:38 2022 Received: (at 53808) by debbugs.gnu.org; 5 Feb 2022 21:00:38 +0000 Received: from localhost ([127.0.0.1]:35682 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGSAf-0007Zv-Tr for submit@debbugs.gnu.org; Sat, 05 Feb 2022 16:00:38 -0500 Received: from mail-ot1-f50.google.com ([209.85.210.50]:43575) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGSAe-0007Zj-Ok for 53808@debbugs.gnu.org; Sat, 05 Feb 2022 16:00:37 -0500 Received: by mail-ot1-f50.google.com with SMTP id j38-20020a9d1926000000b0059fa6de6c71so8029637ota.10 for <53808@debbugs.gnu.org>; Sat, 05 Feb 2022 13:00:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=KhwxJrX9Gm4ysQGzCeDfTDDzXlYDTS18dTrjqT7VNoM=; b=PKbyHGdEZC1milxuDD8Wr0HBkveIPlkWdBYmLSMdSQeq4/PUGiXV91c7JDjtkpqQ8N /5i1TaYQtkN8/DfX1G7ged8M7sBGPNXDZBew1eNBnH7p4VO7C4tsxoT39zDD6/huaVdy rYINB7RCPTwAWts3TflwyiDCimPDac3gcDj511oRfeCOlNyBjNinJGjmidCy2HP9ZfXS RT75KFEIvPv73AynsOUT0zrQ1xkB7D7agZSyulloyComKX62myF2vNI6Ca78XNCMSZ2b qVw/JBOAjQZKEo77IiLs884m4nwu314P+Svu6BfLbPH74VnSZjc3fVwUNuj/oluGAgGU yOPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=KhwxJrX9Gm4ysQGzCeDfTDDzXlYDTS18dTrjqT7VNoM=; b=HUzJoZDWtJ0Kcy1YDSARkoB0WC6cMirc2zIuSKMzkdKXtcQH0wepcRxNoMOmnis/oH kxyVP4Bp8yghVIuy15iXa6HB/n6HUNfXWhQDIZ4JMysCRPHRaFwnFiBDvTmKcRyOjxUJ dxUXgVVNWkJ2BnDehWdWdlddugPHvCpbgkZt2HJuWpGO6I1F8wbpI09MvY5UbV692h5N OIDWcTxcrYBBlEqlhjPYPzqlPuG5quLinpLsZ/2HnNf79d6mA4aU9Xu0hE75ux8UbdQY qoBcIV6WE0nJSDWw+hrEqJ9HszMtjhk/UW4uxX1ET1Zo9uEKLqqHaQfaS8bicnAweYtU gp1w== X-Gm-Message-State: AOAM532SER8Zf1y75iAsTWUnWgXjdtJNtuKOikPIvm7OJIkDGoYxKZA1 45VuJG+RLH44SQ8fJFuoTWS42yMbjjmLM2Fscg73xNp5BTo= X-Google-Smtp-Source: ABdhPJyOL9Vqu932VyKdoQs8Ws+kbn4YyQ6ofx15J/qhuJL3pvb7Hf3DFfrGG0AfE/Lt/tK2sDUd/oPccIiYl3lPkc4= X-Received: by 2002:a05:6830:25c6:: with SMTP id d6mr1842813otu.91.1644094830999; Sat, 05 Feb 2022 13:00:30 -0800 (PST) MIME-Version: 1.0 From: Ioannis Kappas Date: Sat, 5 Feb 2022 21:00:21 +0000 Message-ID: Subject: RE: 29.0.50; ansi colorization process could block indefinetly on stray ESC char To: 53808@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 53808 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) The issue appears to be caused by the ansi color context logic, trying to handle potential SGR sequences split between string fragments. The SGR sequence is accumulated into the context until is complete and only then output with the rest of the input string. But currently, identifying the beginning of an SGR sequence is performed naively based on the first character (ESC aka ^], \033 or \e) and until a valid C1 sequence is matched in the accumulated context string, rather than checking whether the SGR sequence is valid or completed: (defconst ansi-color-control-seq-regexp ;; See ECMA 48, section 5.4 "Control Sequences". "\e\\[[\x30-\x3F]*[\x20-\x2F]*[\x40-\x7E]" "Regexp matching an ANSI control sequence.") (defun ansi-color-apply (string) "Translates SGR control sequences into text properties..." (let* ((context (ansi-color--ensure-context 'ansi-color-context nil)) (face-vec (car context)) (start 0) end result) ;; If context was saved and is a string, prepend it. (setq string (concat (cadr context) string)) (setcar (cdr context) "") ;; Find the next escape sequence. (while (setq end (string-match ansi-color-control-seq-regexp string start)) (let ((esc-end (match-end 0))) ;; ... (push (substring string start end) result) (setq start (match-end 0)) ;; ... )) ;; ... ;; save context, add the remainder of the string to the result (if (string-match "\033" string start) (let ((pos (match-beginning 0))) (setcar (cdr context) (substring string pos)) (push (substring string start pos) result)) (push (substring string start) result)) (apply 'concat (nreverse result)))) A solution (open to discussion) could be to identify a partial SGR fragment based on its actual specification rather than only starting with the ESC char: modified lisp/ansi-color.el @@ -501,6 +501,19 @@ ansi-color-filter-apply (setcar (cdr context) fragment)) (apply #'concat (nreverse result)))) +(defconst ansi-color--sgr-partial-regex + "\e\\(?:\\[\\|$\\)\\(?:(?:[0-9]+;?\\)*" + "A regexp for locating the beginning of a partial SGR + sequence.") + +(defun ansi-color--sgr-fragment-pos (string start) + "Check if STRING ends with a partial SGR sequence and return +its position or nil otherwise. Start looking in STRING at position START." + (save-match-data + (when (and (string-match ansi-color--sgr-partial-regex string start) + (= (match-end 0) (1- (length string)))) + (match-beginning 0)))) + (defun ansi-color-apply (string) "Translates SGR control sequences into text properties. Delete all other control sequences without processing them. @@ -549,8 +562,8 @@ ansi-color-apply (put-text-property start (length string) 'font-lock-face face string)) ;; save context, add the remainder of the string to the result - (if (string-match "\033" string start) - (let ((pos (match-beginning 0))) + (if-let ((pos (ansi-color--sgr-fragment-pos string start))) + (progn (setcar (cdr context) (substring string pos)) (push (substring string start pos) result)) (push (substring string start) result)) Let me know your thoughts, there is also `ansi-color-filter-apply' and `ansi-color-filter-region' that would need similar treatment. I also have a unit test in development. Thanks From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 05 16:48:08 2022 Received: (at 53808) by debbugs.gnu.org; 5 Feb 2022 21:48:08 +0000 Received: from localhost ([127.0.0.1]:35728 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGSue-0000Hj-BB for submit@debbugs.gnu.org; Sat, 05 Feb 2022 16:48:08 -0500 Received: from mail-ot1-f53.google.com ([209.85.210.53]:44800) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGSuc-0000GP-Kv for 53808@debbugs.gnu.org; Sat, 05 Feb 2022 16:48:06 -0500 Received: by mail-ot1-f53.google.com with SMTP id s6-20020a0568301e0600b0059ea5472c98so8054811otr.11 for <53808@debbugs.gnu.org>; Sat, 05 Feb 2022 13:48:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=D5I9shY36r/m1w6YNBk9eYMIn/lAg/x0kwv7g8Img9g=; b=QwHoOHotPz0LcKBufRsi7rxYGUQdTx0CJC4HkDoyizVNn0QIFvuD+vwj2JQ5xzvs6k mCXlTZFG9/lEuokE74nlnp5uKNvWUd4wrpR4LBplp74ZfLOPKbGNbx507pgSrTd+aSFu 6cp33oabgNcKSupnJxIQ5GEKIHkxDDnGUV71TRhFGe3mItuwdYNOYtBd9Ue4a/Qc6bm2 r7UYNoZOJqBSdhLi/0iODdti6jH2Jws360danaxNhx/bPLBGiYwAcPV3esHrv7eJ4Zxv 1cs7miTeBYCmUBWKWn8TWN8r88Py+yd5kleKGY45vEn6xurGdTcx8iJSRe+yv9yFvC/7 VmBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=D5I9shY36r/m1w6YNBk9eYMIn/lAg/x0kwv7g8Img9g=; b=Fa/HI+IT9tX9Vsgoy4mwPMVvwqkwdIWuaJpvHmSEbYeHrQbjzQLjlgrz+Zn6TVRbAu VjfgE5felXzqiEQhaGz+1nINbJUopjtgPNT2cBwYB7m8Erg6OZp74kXcwUt1Vnk6GLQs ht6x5UaI9UaQWlljzdcBOcDQMVzbR3INR7xzs/ECKiTj9y+fbO/Fy80CjwQ0NC7JXjDg uPbG3ZFyFhNj2oOVHb8a6NhdzpusT2dCfcX0Ytd1nQPv8IBod7mgv+9CyfepYiNVMbX+ qyQVlBrggsx+ABGTpiVskQbTJtsIMKRWC943Q0+rl3+KjQqp8ZRjcLtjvnNVhpt6hB4c rvTg== X-Gm-Message-State: AOAM531Xf1uzbgJ1aI5zHy+ZG3H0CyjXI2fVKyb6A+Cg3ypUanQR7dWS hzxdYB3Dr6roeSSuNDiGMOpPGu74H4Ma3MtnaI9Jpj3j5qY= X-Google-Smtp-Source: ABdhPJy7G8+og2wJKiaPHQlatHDsi9OeTDLu79ez6wP5dXSqdeioiPuVAKVzeokSsyMQmM4H38fjFXmDMid7fg5UCZk= X-Received: by 2002:a05:6830:25c6:: with SMTP id d6mr1899714otu.91.1644097681026; Sat, 05 Feb 2022 13:48:01 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Ioannis Kappas Date: Sat, 5 Feb 2022 21:47:50 +0000 Message-ID: Subject: Re: 29.0.50; ansi colorization process could block indefinetly on stray ESC char To: 53808@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 53808 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) (sorry, I sent out the wrong patch, the correct one is modified lisp/ansi-color.el @@ -501,6 +501,20 @@ ansi-color-filter-apply (setcar (cdr context) fragment)) (apply #'concat (nreverse result)))) +(defconst ansi-color--sgr-partial-regex + "\e\\(?:\\[\\|$\\)\\(?:[0-9]+;?\\)*" + "A regexp for locating the beginning of a partial SGR + sequence.") + +(defun ansi-color--sgr-fragment-pos (string start) + "Check if STRING ends with a partial SGR sequence and return +its position or nil otherwise. Start looking in STRING at position START." + (save-match-data + (when (and (string-match ansi-color--sgr-partial-regex string start) + (or (= (match-end 0) 0) + (= (match-end 0) (length string))) ) + (match-beginning 0)))) + (defun ansi-color-apply (string) "Translates SGR control sequences into text properties. Delete all other control sequences without processing them. @@ -549,8 +563,8 @@ ansi-color-apply (put-text-property start (length string) 'font-lock-face face string)) ;; save context, add the remainder of the string to the result - (if (string-match "\033" string start) - (let ((pos (match-beginning 0))) + (if-let ((pos (ansi-color--sgr-fragment-pos string start))) + (progn (setcar (cdr context) (substring string pos)) (push (substring string start pos) result)) (push (substring string start) result)) ) From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 05 16:56:37 2022 Received: (at 53808) by debbugs.gnu.org; 5 Feb 2022 21:56:37 +0000 Received: from localhost ([127.0.0.1]:35757 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGT2r-0000WK-A2 for submit@debbugs.gnu.org; Sat, 05 Feb 2022 16:56:37 -0500 Received: from quimby.gnus.org ([95.216.78.240]:49496) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGT2o-0000W8-Va for 53808@debbugs.gnu.org; Sat, 05 Feb 2022 16:56:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=aM3d3AjedLWYGubVE6orTMlH103O+jImI+J/HLRwekk=; b=PelSZngY/qu3B6DWNMXBCR0BxZ xctV4QXDUf9yqbAhYSNjFcO14R2OR7VZ5OYnK0whRMGtDJEJIH6jyxkdrEXefygz/+uPQsmtWMogN kxX9dZG85kxyN8HkTf1+lx5Dv/hB48xYPfJAR890pWoQZBnJuW7zoTAsVlP7GMLswFys=; Received: from [84.212.220.105] (helo=giant) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nGT2f-0004Cu-Sk; Sat, 05 Feb 2022 22:56:28 +0100 From: Lars Ingebrigtsen To: Ioannis Kappas Subject: Re: bug#53808: 29.0.50; ansi colorization process could block indefinetly on stray ESC char References: X-Now-Playing: David Bowie's _Young Americans_: "Across The Universe" Date: Sat, 05 Feb 2022 22:56:23 +0100 In-Reply-To: (Ioannis Kappas's message of "Sat, 5 Feb 2022 21:00:21 +0000") Message-ID: <87fsoxasfs.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Ioannis Kappas writes: > A solution (open to discussion) could be to identify a partial SGR > fragment based on its actual specification rather than only starting > with the ESC char: Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 53808 Cc: 53808@debbugs.gnu.org, Miha =?utf-8?B?UmlodGFyxaFpxI0=?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Ioannis Kappas writes: > A solution (open to discussion) could be to identify a partial SGR > fragment based on its actual specification rather than only starting > with the ESC char: Hm... what happens if the ESC arrives in one chunk and then the rest of the SGR sequence in the next chunk? (Miha has done work in this area recently; added to the CCs.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 05 17:05:23 2022 Received: (at 53808) by debbugs.gnu.org; 5 Feb 2022 22:05:23 +0000 Received: from localhost ([127.0.0.1]:35775 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGTBK-00031V-Nc for submit@debbugs.gnu.org; Sat, 05 Feb 2022 17:05:23 -0500 Received: from mail-oi1-f177.google.com ([209.85.167.177]:44616) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGTBI-00031H-Qb for 53808@debbugs.gnu.org; Sat, 05 Feb 2022 17:05:21 -0500 Received: by mail-oi1-f177.google.com with SMTP id 4so12868954oil.11 for <53808@debbugs.gnu.org>; Sat, 05 Feb 2022 14:05:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Jd2ZnpT7OzPE6ZYC0lLUZBmQgnbGZypsS80pqRi5nQI=; b=HvfWxGbvGsl83lOLGtrqw7UNQmF+IcnXPTSXPz1GXOifW2LhVmDqP2lhQVuhzsTMG8 jyIWX09v14zmbjJQ6nFKJxuyzzwBXQuA6k9d34mWMwtBCCJ6dc91vCSXR+YsumxOHQmS 6PAPdbFsiAAGuFRVV/yv+V/6H+0nhW8GWH/T5woYE2BZsafwZtAjUY0GJx0FblT4L8LV 6/a1IBo0PoACyH4oAr4453fiGPBh7+ezfEQ177D6M24Gqe0YECI4nqtTjjLgFSaXcqm7 ur95sNGNDgWkxA+oJBY5JdjbGpWzOwUvSVSvu+b1RChrcKxdlpiZdp4LPYKINX3zZruE x2lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Jd2ZnpT7OzPE6ZYC0lLUZBmQgnbGZypsS80pqRi5nQI=; b=NN3qg2AaaK8glSHOGBo41MNHTv5XfdrxI9Gur8HPe5aVJNoEmlRIHJKYf/trB8mEqM 87SnByaW//qbUULwNvepw4PyFez2p/BcNLCf0KCR5kHleOaTa43+KBMpYTx+Z07nnLlr BfEn2Y8JNuvL/3eK8Nif63RhiO9KaQKuDhMiLtRsgRnQrW8DiSHOtTyWFuSj/1NhtOrV aXzLhHGUHojHGp2DHsyXQJjtlJ8Q50kJ5c5ZwCV9W9a3Jf5qjRJsUx0osjPUfWhLSB0G UB1nB9qHEhLdTLV8AT6Pzp/XzM2zUj6PSUAronDnoEHTgTE7OraXbpCFf95XI5zZW18f npmQ== X-Gm-Message-State: AOAM533M6ROuzwNHMbXNwxZQqthF7MF7+qZ+DDzzc/jNeTPpLQgFIiZo sWOMJf1l7twiJZg2THi1idly3JVU2G6S1gaiKO8= X-Google-Smtp-Source: ABdhPJz+5TRJ3oW/3AmXE7WICIq/YkzgtIXqIuvlN91fWW3zbIqwEDvwgPj+mgveYIRX2xjSKS1Y3zV9/ULZQVmikTM= X-Received: by 2002:a05:6808:2228:: with SMTP id bd40mr2414994oib.335.1644098715166; Sat, 05 Feb 2022 14:05:15 -0800 (PST) MIME-Version: 1.0 References: <87fsoxasfs.fsf@gnus.org> In-Reply-To: <87fsoxasfs.fsf@gnus.org> From: Ioannis Kappas Date: Sat, 5 Feb 2022 22:05:05 +0000 Message-ID: Subject: Re: bug#53808: 29.0.50; ansi colorization process could block indefinetly on stray ESC char To: Lars Ingebrigtsen Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 53808 Cc: 53808@debbugs.gnu.org, =?UTF-8?B?TWloYSBSaWh0YXLFoWnEjQ==?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Sat, Feb 5, 2022 at 9:56 PM Lars Ingebrigtsen wrote: > > Ioannis Kappas writes: > > > A solution (open to discussion) could be to identify a partial SGR > > fragment based on its actual specification rather than only starting > > with the ESC char: > > Hm... what happens if the ESC arrives in one chunk and then the rest of > the SGR sequence in the next chunk? It is handled correctly as expected if the concatenated sequence is an SGR, it is output as such, i.e. all test/lisp/ansi-color-tests.el:ansi-color-incomplete-sequences-test pass still pass. Here is the list of unit tests showing of what I consider correct handling of non SGR sequences I have came up with thus far (ert-deftest ansi-color-context-non-sgr () (with-temp-buffer (let ((text (ansi-color-apply "\e[33mHello World\e[0m"))) (should (string= "Hello World" text)) (should (equal (get-char-property 0 'font-lock-face text) '(:foreground "yellow3"))) )) (with-temp-buffer (let ((pretext (ansi-color-apply "5")) (text (ansi-color-apply "\e[33mHello World\e[0m"))) (should (string= "Hello World" text)) (should (equal (get-char-property 0 'font-lock-face text) '(:foreground "yellow3"))) )) (with-temp-buffer (let ((pretext (ansi-color-apply "\e")) (text (ansi-color-apply "\e[33mHello World\e[0m"))) (should (string= "\eHello World" text)) (should (equal (get-char-property 1 'font-lock-face text) '(:foreground "yellow3"))) )) (with-temp-buffer (let ((pretext (ansi-color-apply "\e[")) (text (ansi-color-apply "\e[33mHello World\e[0m"))) (should (string= "\e[Hello World" text)) (should (equal (get-char-property 2 'font-lock-face text) '(:foreground "yellow3"))) )) (with-temp-buffer (let ((pretext (ansi-color-apply "\e[33")) (text (ansi-color-apply "mHello World\e[0m"))) (should (string= "Hello World" text)) (should (equal (get-char-property 2 'font-lock-face text) '(:foreground "yellow3"))) )) (with-temp-buffer (let ((pretext (ansi-color-apply "\e[33m")) (text (ansi-color-apply "Hello World\e[0m"))) (should (string= "Hello World" text)) (should (equal (get-char-property 2 'font-lock-face text) '(:foreground "yellow3"))) )) (with-temp-buffer (let ((pretext (ansi-color-apply "\e[33;1")) (text (ansi-color-apply "mHello World\e[0m"))) (should (string= "Hello World" text)) (should (equal (get-char-property 2 'font-lock-face text) '(ansi-color-bold (:foreground "yellow3")))) )) (with-temp-buffer (let ((pretext (ansi-color-apply "\e[33;")) (text (ansi-color-apply "1mHello World\e[0m"))) (should (string= "Hello World" text)) (should (equal (get-char-property 2 'font-lock-face text) '(ansi-color-bold (:foreground "yellow3")))) )) ) > (Miha has done work in this area recently; added to the CCs.) Looking forward to his feedback :) it is because of his work I've decided to raise this against 29 instead of the 28 branch. From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 06 15:30:14 2022 Received: (at 53808) by debbugs.gnu.org; 6 Feb 2022 20:30:14 +0000 Received: from localhost ([127.0.0.1]:39890 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGoAn-0004Pq-Ms for submit@debbugs.gnu.org; Sun, 06 Feb 2022 15:30:14 -0500 Received: from kamnitnik.top ([209.250.245.214]:58830) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGoAm-0004Pf-05 for 53808@debbugs.gnu.org; Sun, 06 Feb 2022 15:30:12 -0500 Received: from localhost (BSN-77-156-43.static.siol.net [193.77.156.43]) by kamnitnik.top (Postfix) with ESMTPSA id 0D5EE9C707; Sun, 6 Feb 2022 20:30:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kamnitnik.top; s=mail; t=1644179410; bh=W9kt+mnjpZxretapX+fLhj37ulMrsbQ8oBqk84KXRwY=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=OIyCePuPI9qNN1um6Hw3jgPqRYPhfZPHF4X23b28L0fNCs4Y0OwIjY/G4w8LUnV+b eEbqYZieiuQuFZT+kj2r67JPTdA3VSmHF9ZtsIxJOh4pTZMhWgjjAbENXTO24Owhm3 7t5J3ygFlSTXX8MTDbnFzvaMKz/oUWbEBTrMKLIW9/NSI/04d2pX6PtMQkSmD2oj+y RHLGiDOxsaByY06weGvD+26QIxqMjNnVekekjz9AsFwPqhtSLxHvGkZ3bv3Q0HXpvp bod0wUecpNHe29Q24pb3ba1gmGTqr1zxxGTpjR6YQLse+oEXpFoVUEtqQD2WGCpZHy p3HAJ4h1Mq7Nw== From: To: Ioannis Kappas , Lars Ingebrigtsen Subject: Re: bug#53808: 29.0.50; ansi colorization process could block indefinetly on stray ESC char In-Reply-To: References: <87fsoxasfs.fsf@gnus.org> Date: Sun, 06 Feb 2022 21:36:59 +0100 Message-ID: <87ee4fwx3o.fsf@miha-pc> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-Spam-Score: 2.1 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Ioannis Kappas writes: > It is handled correctly as expected if the concatenated sequence is an > SGR, it is output as such, i.e. all > test/lisp/ansi-color-tests.el:ansi-color-incomplete-sequences-test > pass still pass. > [...] Content analysis details: (2.1 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record 1.6 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: kamnitnik.top (top)] 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 53808 Cc: 53808@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.1 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Ioannis Kappas writes: > It is handled correctly as expected if the concatenated sequence is an > SGR, it is output as such, i.e. all > test/lisp/ansi-color-tests.el:ansi-color-incomplete-sequences-test > pass still pass. > [...] Content analysis details: (2.1 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record 1.6 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: kamnitnik.top (top)] 1.0 BULK_RE_SUSP_NTLD Precedence bulk and RE: from a suspicious TLD 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain Ioannis Kappas writes: > It is handled correctly as expected if the concatenated sequence is an > SGR, it is output as such, i.e. all > test/lisp/ansi-color-tests.el:ansi-color-incomplete-sequences-test > pass still pass. > > Here is the list of unit tests showing of what I consider correct > handling of non SGR sequences I have came up with thus far > > (ert-deftest ansi-color-context-non-sgr () > > [...] > > (with-temp-buffer > (let ((pretext (ansi-color-apply "\e[33;")) > (text (ansi-color-apply "1mHello World\e[0m"))) > (should (string= "Hello World" text)) > (should (equal (get-char-property 2 'font-lock-face text) > '(ansi-color-bold (:foreground "yellow3")))) > )) > ) Thanks. I took the liberty of working on your patch, adding support for ansi-color-apply-on-region, ansi-color-filter-region, ansi-color-filter-apply. I also added some tests as you suggested and made a minor simplification. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-ansi-color-don-t-get-stuck-on-e.patch Content-Transfer-Encoding: quoted-printable From=20162045f83154d3df7b482871b05076a92efd02f9 Mon Sep 17 00:00:00 2001 From: Ioannis Kappas Date: Sun, 6 Feb 2022 21:25:56 +0100 Subject: [PATCH] ansi-color: don't get stuck on \e * lisp/ansi-color.el (ansi-color--control-seq-fragment-regexp): New constant. (ansi-color-filter-apply): (ansi-color-apply): (ansi-color-filter-region): (ansi-color-apply-on-region): Don't get stuck on \e if it is determined that it cannot start a valid ANSI escape sequence (Bug#53808). * test/lisp/ansi-color-tests.el (ansi-color-incomplete-sequences-test): Test for \e that doesn't start a valid ANSI escape sequence. =2D-- lisp/ansi-color.el | 26 ++++++++++++++++++++------ test/lisp/ansi-color-tests.el | 20 +++++++++++++++++++- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/lisp/ansi-color.el b/lisp/ansi-color.el index 3973d9db08..e5d2e2c4ac 100644 =2D-- a/lisp/ansi-color.el +++ b/lisp/ansi-color.el @@ -347,6 +347,10 @@ ansi-color-control-seq-regexp "\e\\[[\x30-\x3F]*[\x20-\x2F]*[\x40-\x7E]" "Regexp matching an ANSI control sequence.") =20 +(defconst ansi-color--control-seq-fragment-regexp + "\e\\[[\x30-\x3F]*[\x20-\x2F]*\\|\e" + "Regexp matching a partial ANSI control sequence.") + (defconst ansi-color-parameter-regexp "\\([0-9]*\\)[m;]" "Regexp that matches SGR control sequence parameters.") =20 @@ -492,7 +496,9 @@ ansi-color-filter-apply ;; save context, add the remainder of the string to the result (let ((fragment "")) (push (substring string start =2D (if (string-match "\033" string start) + (if (string-match + (concat "\\(?:" ansi-color--control-seq-fragme= nt-regexp "\\)\\'") + string start) (let ((pos (match-beginning 0))) (setq fragment (substring string pos)) pos) @@ -549,7 +555,9 @@ ansi-color-apply (put-text-property start (length string) 'font-lock-face face string)) ;; save context, add the remainder of the string to the result =2D (if (string-match "\033" string start) + (if (string-match + (concat "\\(?:" ansi-color--control-seq-fragment-regexp "\\)\\'") + string start) (let ((pos (match-beginning 0))) (setcar (cdr context) (substring string pos)) (push (substring string start pos) result)) @@ -685,7 +693,11 @@ ansi-color-filter-region (while (re-search-forward ansi-color-control-seq-regexp end-marker t) (delete-region (match-beginning 0) (match-end 0))) ;; save context, add the remainder of the string to the result =2D (if (re-search-forward "\033" end-marker t) + (set-marker start (point)) + (while (re-search-forward ansi-color--control-seq-fragment-regexp + end-marker t)) + (if (and (/=3D (point) start) + (=3D (point) end-marker)) (set-marker start (match-beginning 0)) (set-marker start nil))))) =20 @@ -742,10 +754,12 @@ ansi-color-apply-on-region ;; Otherwise, strip. (delete-region esc-beg esc-end)))) ;; search for the possible start of a new escape sequence =2D (if (re-search-forward "\033" end-marker t) + (while (re-search-forward ansi-color--control-seq-fragment-regexp + end-marker t)) + (if (and (/=3D (point) start-marker) + (=3D (point) end-marker)) (progn =2D (while (re-search-forward "\033" end-marker t)) =2D (backward-char) + (goto-char (match-beginning 0)) (funcall ansi-color-apply-face-function start-marker (point) (ansi-color--face-vec-face face-vec)) diff --git a/test/lisp/ansi-color-tests.el b/test/lisp/ansi-color-tests.el index 71b706c763..2ff7fc6aaf 100644 =2D-- a/test/lisp/ansi-color-tests.el +++ b/test/lisp/ansi-color-tests.el @@ -171,7 +171,25 @@ ansi-color-incomplete-sequences-test (insert str) (ansi-color-apply-on-region opoint (point)))) (should (ansi-color-tests-equal-props =2D propertized-str (buffer-string)))))) + propertized-str (buffer-string)))) + + ;; \e not followed by '[' and invalid ANSI escape seqences + (dolist (fun (list ansi-filt ansi-app)) + (with-temp-buffer + (should (equal (funcall fun "\e") "")) + (should (equal (funcall fun "\e[33m test \e[0m") + (with-temp-buffer + (concat "\e" (funcall fun "\e[33m test \e[0m"))))= )) + (with-temp-buffer + (should (equal (funcall fun "\e[") "")) + (should (equal (funcall fun "\e[33m Z \e[0m") + (with-temp-buffer + (concat "\e[" (funcall fun "\e[33m Z \e[0m")))))) + (with-temp-buffer + (should (equal (funcall fun "\e a \e\e[\e[") "\e a \e\e[")) + (should (equal (funcall fun "\e[33m Z \e[0m") + (with-temp-buffer + (concat "\e[" (funcall fun "\e[33m Z \e[0m"))))))= ))) =20 (provide 'ansi-color-tests) =20 =2D-=20 2.34.1 --=-=-= Content-Type: text/plain Thanks again and best regards. --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJHBAEBCAAxFiEEmxVnesoT5rQXvVXnswkaGpIVmT8FAmIAMWsTHG1paGFAa2Ft bml0bmlrLnRvcAAKCRCzCRoakhWZP+WFD/44huc4fAmaZv2HQ8YkAxGXf5ln8wDG l5rxjPYODbHBEkMpV8rAKrCM7EvCQKvZqbrAVwmj+p619akWuQbQoZSs3v3lRJDW AAuluYpckiLV6FVQb93Vl8qWfdjajua/nTdP8jxKLv/odclzYNOmiHJ5ITQxq0cE p6/5XNU4x6ONwb2A2MxZ6WN+O8GmH2k/j6cBzf1yTw1mfYKHJ83t6mjcQv8PBTyC vbs++//T6vFuz+8wn/NujhAJ6gQPpqX/KMbxhD2/hw1loh1fkzW19ky5Y2fp+w7C Rf+FNm1ZMAERq9sb02BY3/mReRmFSeLTBEybxHWonBrYOFoIf3VvJMBBPQx142Cj k7HKZLDalTLEV8CNK51dXdS0KIER4KwXBMXMS9WmhPBYrGpsIP9vgO6OuJ7oBGyI mt7IARgLYI1/UEiVkvnddWAPVF8b/ZffMLI//NXyIP3uE3g/Ep2CUoFuFo5mnhRP nhBXmOi0bo9y1h2Hs+hHrXj20IrUvOo3IoJRkzGbJckPvJFiSWEPJckOklW4fTfI JkPNc0dMaRbKkwHlwZIlz0e1ZX7mBnMC92kklw35D9KomvL3IHQ1ntWQFGsMJKBI TmYMRmrQGq6ZDTRT5KRZIO/rMkm2jlvUwPGeZ8K2bXqVRN5kM+cjX7eYF7H/kKkH C1mS6UHjhTdH7w== =cfzn -----END PGP SIGNATURE----- --==-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 06 17:55:56 2022 Received: (at 53808) by debbugs.gnu.org; 6 Feb 2022 22:55:56 +0000 Received: from localhost ([127.0.0.1]:40175 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGqRo-0008JL-7u for submit@debbugs.gnu.org; Sun, 06 Feb 2022 17:55:56 -0500 Received: from quimby.gnus.org ([95.216.78.240]:60994) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGqRX-0008If-VL for 53808@debbugs.gnu.org; Sun, 06 Feb 2022 17:55:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=HqsdkDK7ubmHjqS329ZwUC/KwClCdZxpWCk3+rq8jL0=; b=OrhAKE5UjN4+cefIpFqTRUOk0p Ug4dZVPKb8+vD6mSqnk1wNWuR8Y4nF8BtqS1pFF6kxZh3dE2+qJK09cYRQKxGFiPp7EThgCvF27LA u3WbHjTD+RRDAuBHCHqlgH4DQZlSp1jsxfkcqXKsqgoNmrhdYB/SAUYT1IyF4nW5ob3M=; Received: from [84.212.220.105] (helo=giant) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nGqRN-0000fX-JO; Sun, 06 Feb 2022 23:55:32 +0100 From: Lars Ingebrigtsen To: Subject: Re: bug#53808: 29.0.50; ansi colorization process could block indefinetly on stray ESC char References: <87fsoxasfs.fsf@gnus.org> <87ee4fwx3o.fsf@miha-pc> X-Now-Playing: Joni Mitchell's _Hejira_: "Refuge Of The Roads" Date: Sun, 06 Feb 2022 23:55:27 +0100 In-Reply-To: <87ee4fwx3o.fsf@miha-pc> (miha@kamnitnik.top's message of "Sun, 06 Feb 2022 21:36:59 +0100") Message-ID: <878run61wg.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: writes: > Thanks. I took the liberty of working on your patch, adding support for > ansi-color-apply-on-region, ansi-color-filter-region, > ansi-color-filter-apply. I also added some tests as you suggested an [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: 1.6 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: writes: > Thanks. I took the liberty of working on your patch, adding support for > ansi-color-apply-on-region, ansi-color-filter-region, > ansi-color-filter-apply. I also added some tests as you suggested an [...] Content analysis details: (1.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 T_SPF_HELO_TEMPERROR SPF: test of HELO record failed (temperror) -0.0 SPF_PASS SPF: sender matches SPF record 1.6 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: kamnitnik.top (top)] -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 53808 Cc: Ioannis Kappas , 53808@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) writes: > Thanks. I took the liberty of working on your patch, adding support for > ansi-color-apply-on-region, ansi-color-filter-region, > ansi-color-filter-apply. I also added some tests as you suggested and > made a minor simplification. Thanks; applied to Emacs 29. Ioannis' original code was small enough to apply without an FSF copyright assignment, so I noted the different authors in the commit message. Ioannis, this change was small enough to apply without assigning copyright to the FSF, but for future patches you want to submit, it might make sense to get the paperwork started now, so that subsequent patches can be applied speedily. Would you be willing to sign such paperwork? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 06 17:55:47 2022 Received: (at control) by debbugs.gnu.org; 6 Feb 2022 22:55:47 +0000 Received: from localhost ([127.0.0.1]:40173 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGqRf-0008J1-2A for submit@debbugs.gnu.org; Sun, 06 Feb 2022 17:55:47 -0500 Received: from quimby.gnus.org ([95.216.78.240]:32778) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGqRd-0008Io-Su for control@debbugs.gnu.org; Sun, 06 Feb 2022 17:55:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=dFVgQ0GgqBKqEJ9WQaConeKaFMuQchdae4Fa9ZLhk+0=; b=WMBMK50aQ9MKRVVTVmhfl5SZ68 AA1ui2Pqw8ACCiR/vyTVuY67BBdFI6JjKMK/kYkp1qUHd2z8b0lF7Mw/vRzfRYjABszSN4pxWeGxH ZNpmhkYT2jLZ+Df1Ccq9Jo0lUuFx+edaOvRgdUaGpcUx0cGeQh/AIWPEdUhY2QhbmrgQ=; Received: from [84.212.220.105] (helo=giant) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nGqRV-0000fi-MD for control@debbugs.gnu.org; Sun, 06 Feb 2022 23:55:40 +0100 Date: Sun, 06 Feb 2022 23:55:36 +0100 Message-Id: <877da761w7.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #53808 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: close 53808 29.1 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) close 53808 29.1 quit From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 07 02:52:04 2022 Received: (at 53808) by debbugs.gnu.org; 7 Feb 2022 07:52:04 +0000 Received: from localhost ([127.0.0.1]:40786 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGyoe-0004pN-20 for submit@debbugs.gnu.org; Mon, 07 Feb 2022 02:52:04 -0500 Received: from mail-ot1-f42.google.com ([209.85.210.42]:41838) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGyoZ-0004or-If for 53808@debbugs.gnu.org; Mon, 07 Feb 2022 02:52:03 -0500 Received: by mail-ot1-f42.google.com with SMTP id b12-20020a9d754c000000b0059eb935359eso10330537otl.8 for <53808@debbugs.gnu.org>; Sun, 06 Feb 2022 23:51:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=GN94oPUyCyet+Gmuhq/vO/SnXrH2q6sihwRjUxwAkHo=; b=HBfTijY9CaghyN9dGUcLEEZ4mv0bDI5BIeB1HzPNuGkOquL56Vwy8wxz+ZKOcCaCwr 9gj7tdvwV571RegwFdeHx4UcbFzllQFLGyE2s8d7oZjlGhqkI7dhX2BA5nKLdrZ5ENz7 4+JOdyDm7qC9JmlUPs/oYtcUF2dVBnsKBAZr3wGRHNYV4O2quAA/YN864Aj9qj9bJKlo GVnWTqTx6JV/g33H2gMl/flrTUZQMbXFyAaUjKx/o3vs8YMZo9o0aGRdVhR62l1KbCQj l6pqu1I3r4la/H0Gzs8zoqsE059f8ItGdm3RjuenH2/iqyoJSpIHQ+337YEPUPd1i4kC uUBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GN94oPUyCyet+Gmuhq/vO/SnXrH2q6sihwRjUxwAkHo=; b=i6cAjbuYAHQid01wbQJAm+2KhrHhVaSqmPY6CMRm8/kgkcGq4RiQs+bn1+n+5CkxIx dJ7AKyFbF1nEoioUYw01tSCUwZ7UuFSPN2WMNd51FUdNtLjJ7aUjgEHuThKwWJtX0euw /DNl+QO7wJI7jDm5c+Yo//hjdG7ARXgu5UpQriewMCebN60I0C9QUIPvYwt8maZmG3Mv SVUVE3pyEUsBo4mqTLoMSffBU8MhUZj/C+BtxaehLqtzMH2zs4NFbIYZtop54zBfTGID lf6MThFHdJmZUXZ//Ecy9ZfwRlmiyUdap3Q7FO9mcYhTPdP4thBQuy5nB1OZhYh/ff4t s0AQ== X-Gm-Message-State: AOAM532Ti7KsTi4t4FOhOpi/xbD4MzjSjLmJWsuOYrg43QvbABOhhiXI OzVrMAkc2MoEq5tcZ7thhq6g9WZBF2d44rlPf0ND5bQXfEU= X-Google-Smtp-Source: ABdhPJzCGvis0z7KimH0wgjJMt3eZ8PVkBPSerjubAf3RXf0YamFKYJV/6AEeTBGHxIykT9vfZop1Q+Yh6SRpIOfLpE= X-Received: by 2002:a05:6830:25c6:: with SMTP id d6mr3755668otu.91.1644220313810; Sun, 06 Feb 2022 23:51:53 -0800 (PST) MIME-Version: 1.0 References: <87fsoxasfs.fsf@gnus.org> <87ee4fwx3o.fsf@miha-pc> In-Reply-To: <87ee4fwx3o.fsf@miha-pc> From: Ioannis Kappas Date: Mon, 7 Feb 2022 07:51:44 +0000 Message-ID: Subject: Re: bug#53808: 29.0.50; ansi colorization process could block indefinetly on stray ESC char To: =?UTF-8?B?TWloYSBSaWh0YXLFoWnEjQ==?= Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 1.6 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Hi Miha, On Sun, Feb 6, 2022 at 8:30 PM wrote: > Thanks. I took the liberty of working on your patch, adding support for > ansi-color-apply-on-region, ansi-color-filter-region, > ansi-color-filter-apply. I also added some tests as you suggested an [...] Content analysis details: (1.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (ioannis.kappas[at]gmail.com) 1.6 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: kamnitnik.top (top)] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.210.42 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.210.42 listed in wl.mailspike.net] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 53808 Cc: Lars Ingebrigtsen , 53808@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.6 (/) Hi Miha, On Sun, Feb 6, 2022 at 8:30 PM wrote: > Thanks. I took the liberty of working on your patch, adding support for > ansi-color-apply-on-region, ansi-color-filter-region, > ansi-color-filter-apply. I also added some tests as you suggested and > made a minor simplification. > thanks for looking into this! The patch looks good and reduces the issue considerably, but I've noticed there is still some undesired behaviour with non SGR CSI sequences. I was expecting the following test to display the non SGR `\e[a' characters verbatim in the output (this is in the context of the test/lisp/ansi-color-tests.el:ansi-color-incomplete-sequences-test()), (dolist (fun (list ansi-filt ansi-app)) (with-temp-buffer (should (equal (funcall fun "\e[a") "")) (should (equal (funcall fun "\e[33m Z \e[0m") (with-temp-buffer (concat "\e[a" (funcall fun "\e[33m Z \e[0m"))))) )) but fails to do so with Test ansi-color-incomplete-sequences-test condition: (ert-test-failed ((should (equal (funcall fun "\33[33m Z \33[0m") (with-temp-buffer ...))) :form (equal " Z " "\33[a Z ") :value nil :explanation (arrays-of-different-length 3 6 " Z " "\33[a Z " first-mismatch-at 0))) i.e. the "\e[a" seq does not appear in the output. Even before that, I was expecting (equal (funcall fun "\e[a") "") to fail and (equal (funcall fun "\e[a") "\e[a") to be true instead (as this can't be the start of a valid SGR expression). Is there a reason why the ansi-color library tries to match input against the CSI superset sequence instead of the SGR subset? The package appears to be dealing exclusively with the latter and using CSI regexps seems like an unnecessary complication to me. (Just for reference, I'm using the terminology found in the ANSI escape code in wikipedia at https://en.wikipedia.org/w/index.php?title=ANSI_escape_code&oldid=1070369816#Description) The SGR set as I understand it is the char sequence starting with the ESC control character followed by the [ character followed by zero or more of [0-9]+; followed by [0-9]+ followed by m. For example, ESC[33m or ESC[3;31m. This is what I tried to capture as a fragment with the "\e\\(?:\\[\\|$\\)\\(?:(?:[0-9]+;?\\)*" regexp in my original patch. Another minor observation, perhaps the following concat could be moved into defconst in the interest of performance (it appears twice in the patch)? (let ((fragment "")) (push (substring string start - (if (string-match "\033" string start) + (if (string-match + (concat "\\(?:" ansi-color--control-seq-fragment-regexp "\\)\\'") + string start) Best Regards From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 07 06:32:46 2022 Received: (at 53808) by debbugs.gnu.org; 7 Feb 2022 11:32:46 +0000 Received: from localhost ([127.0.0.1]:41161 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nH2GE-0000hF-7Q for submit@debbugs.gnu.org; Mon, 07 Feb 2022 06:32:46 -0500 Received: from kamnitnik.top ([209.250.245.214]:33982) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nH2G9-0000gz-GY for 53808@debbugs.gnu.org; Mon, 07 Feb 2022 06:32:44 -0500 Received: from localhost (unknown [IPv6:2a00:ee2:e04:9300:b7eb:7ae7:cc56:e0da]) by kamnitnik.top (Postfix) with ESMTPSA id 3BD9B9C70E; Mon, 7 Feb 2022 11:32:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kamnitnik.top; s=mail; t=1644233560; bh=g09K5kHDD4M/eFr9Bf+7qz/KfCMKHoSHlQmrB5AU5jU=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=IuCOnPVQnYarkr3vZnIHZcGAv7zSX+jdid1w7iGQFjn+H9JYokxiFHVdOSMOBOSZn BRAVVtjWF/u8ceefAh+goc2wep782sTELGH8bpo1bpEI4yDhbqUyTPh1B5u+uqR5YX zrIcOZwdFdVbbrB0y7uVOjdYnvXSwB25NunTVJej9zkzYEa5RWK6JC95TXLWFWq+Ec CwpYKC1a1EvT/gl/9kF2IjxYak1ASQC5Er26mI4dCm6h3j2jUJ4x9wx/lpohEvOmyX iaQroB5ShhKV60F/CGRtrbbk4VctxeHbfNp294z0pBvHeUhld5vRnkAvGCOyIXboTW cICNaAkZoMkkw== From: To: Ioannis Kappas Subject: Re: bug#53808: 29.0.50; ansi colorization process could block indefinetly on stray ESC char In-Reply-To: References: <87fsoxasfs.fsf@gnus.org> <87ee4fwx3o.fsf@miha-pc> Date: Mon, 07 Feb 2022 12:42:20 +0100 Message-ID: <86r18eucmb.fsf@miha-pc> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-Spam-Score: 2.1 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Ioannis Kappas writes: > Thanks for looking into this! The patch looks good and reduces the > issue considerably, but I've noticed there is still some undesired > behaviour with non SGR CSI sequences. I was expecting the fo [...] Content analysis details: (2.1 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record 1.6 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: kamnitnik.top (top)] 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 53808 Cc: Lars Ingebrigtsen , 53808@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.1 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Ioannis Kappas writes: > Thanks for looking into this! The patch looks good and reduces the > issue considerably, but I've noticed there is still some undesired > behaviour with non SGR CSI sequences. I was expecting the fo [...] Content analysis details: (2.1 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record 1.6 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: kamnitnik.top (top)] 1.0 BULK_RE_SUSP_NTLD Precedence bulk and RE: from a suspicious TLD 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Ioannis Kappas writes: > Thanks for looking into this! The patch looks good and reduces the > issue considerably, but I've noticed there is still some undesired > behaviour with non SGR CSI sequences. I was expecting the following > test to display the non SGR `\e[a' characters verbatim in the output > (this is in the context of the > test/lisp/ansi-color-tests.el:ansi-color-incomplete-sequences-test()), > > (dolist (fun (list ansi-filt ansi-app)) > (with-temp-buffer > (should (equal (funcall fun "\e[a") "")) > (should (equal (funcall fun "\e[33m Z \e[0m") > (with-temp-buffer > (concat "\e[a" (funcall fun "\e[33m Z \e[0m"))= ))) > )) > > but fails to do so with > > Test ansi-color-incomplete-sequences-test condition: > (ert-test-failed > ((should > (equal > (funcall fun "\33[33m Z \33[0m") > (with-temp-buffer ...))) > :form > (equal " Z " "\33[a Z ") > :value nil :explanation > (arrays-of-different-length 3 6 " Z " "\33[a Z " first-mismatch-at = 0))) > > i.e. the "\e[a" seq does not appear in the output. Even before that, I > was expecting (equal (funcall fun "\e[a") "") to fail and (equal > (funcall fun "\e[a") "\e[a") to be true instead (as this can't be the > start of a valid SGR expression). > > Is there a reason why the ansi-color library tries to match input > against the CSI superset sequence instead of the SGR subset? The > package appears to be dealing exclusively with the latter and using > CSI regexps seems like an unnecessary complication to me. Seems like filtering of non-SGR CSI sequences was introduced in commit from Sat May 29 14:25:00 2010 -0400 (bc8d33d540d079af28ea93a0cf8df829911044ca) to fix bug#6085. And indeed, if I try to set 'ansi-color-control-seq-regexp' to the more specific SGR-only regexp "\e\\[[0-9;]*m", I get a lot of distracting "^[[K" in the output of "grep --color=3Dalways" on my system. > (Just for reference, I'm using the terminology found in the ANSI > escape code in wikipedia at > https://en.wikipedia.org/w/index.php?title=3DANSI_escape_code&oldid=3D107= 0369816#Description) > > The SGR set as I understand it is the char sequence starting with the > ESC control character followed by the [ character followed by zero or > more of [0-9]+; followed by [0-9]+ followed by m. For example, ESC[33m > or ESC[3;31m. This is what I tried to capture as a fragment with the > "\e\\(?:\\[\\|$\\)\\(?:(?:[0-9]+;?\\)*" regexp in my original patch. I believe 'ansi-color--control-seq-fragment-regexp' should mirror 'ansi-color-control-seq-regexp' as exactly as possible. In other words, if one matches all CSI sequences, the other shouldn't match only SGR sequences. > Another minor observation, perhaps the following concat could be moved > into defconst in the interest of performance (it appears twice in the > patch)? > > (let ((fragment "")) > (push (substring string start > - (if (string-match "\033" string start) > + (if (string-match > + (concat "\\(?:" > ansi-color--control-seq-fragment-regexp "\\)\\'") > + string start) Thanks, noted, I will hopefully send the simple patch soon. > Best Regards Thanks, best regards. --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJHBAEBCAAxFiEEmxVnesoT5rQXvVXnswkaGpIVmT8FAmIBBZwTHG1paGFAa2Ft bml0bmlrLnRvcAAKCRCzCRoakhWZP5VqEACSrMTXg/T9ZF2ZSpV6q96PoD1Z0MZQ L7QZoCrdqt8Sfp9eZxjGVZe9gkxwcqK1X8YPR5JCh7tKn5/j7yvfwtKovq2VOdqV kvmkcFb/eKSV1XOzfUnjB9urIqDmiJOF3S7xwfw+3t/UG/+tVK6H5ldv4KE/KnvQ bs67NmarfIB0EV4+wVwe7eNnE+ByS7fgD7b/QYcRUDYjpq8Ga2CsNTICFslxd39c z5zDj8XOtUArdwQpz/dWloobkGePDBPcbX0EyyqzJVwSAJAnrgE95KEW92w2UAhz ueu9vIUPitEv8q3Bl3e8dJbxqL5sxlW8Fe6+/mFf4/tHX2gMvIifdoqZITsWRpgw 9R2mrb7pVEJKO2iuS2F+1oXeKNc3Iiqavl3CSPFWYvz9S17KkC8OwuMldJvottCt gIca9nGyMqZNBW25nF8nF+N0tcmN2rL/5qxn7nXQ1zwib/48lTy3RQZD5BITDPt0 HPDWu9Vb8jKmfMmyu2nZ3k7+SLVSGpO0werhQHkrsF1NTWznRY7LvKO9M6IOMQEf FLCTzT8GA2UcIfD//yG/aaNcSxgvUKk/zqwLourF6RbdvbxVQegxUdkfYHGewJLg hKIW4kBSi1T9gZboxnedY4sn1TdE/cHUbyArcn0ibpLRcvYjfdpbaXAprkG8tMwB oxRjvvL7nIjGrg== =y0Qa -----END PGP SIGNATURE----- --=-=-=-- From unknown Sat Jun 21 12:26:26 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 07 Mar 2022 12:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator