From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ted Zlatanov Newsgroups: gmane.emacs.bugs Subject: bug#15648: 24.2.50; gnutls SSL connection to IMAP server causes emacs to crash completely Date: Mon, 04 Nov 2013 11:44:41 -0500 Organization: =?UTF-8?Q?=D0=A2=D0=B5=D0=BE=D0=B4=D0=BE=D1=80_?= =?UTF-8?Q?=D0=97=D0=BB=D0=B0=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= @ Cienfuegos Message-ID: <8738ncru9y.fsf@flea.lifelogs.com> References: <21089.32240.198931.971000@consult.pretender> <87fvrun1pw.fsf@flea.lifelogs.com> <21093.32992.278229.646703@consult.pretender> <877gd5mo5x.fsf@flea.lifelogs.com> <21094.39055.449629.706850@consult.pretender> <21094.40085.664080.69561@consult.pretender> <21094.52645.645440.977584@consult.pretender> <21094.64459.131668.849138@consult.pretender> <21095.19949.639350.970770@consult.pretender> <83wql4hvam.fsf@gnu.org> <21096.920.835718.562924@consult.pretender> <83hac7j2a2.fsf@gnu.org> <21097.58066.940940.323995@consult.pretender> <83iowlh27q.fsf@gnu.org> <87eh79ico2.fsf_-_@flea.lifelogs.com> <83a9hxgpt1.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1383583513 16921 80.91.229.3 (4 Nov 2013 16:45:13 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 4 Nov 2013 16:45:13 +0000 (UTC) Cc: emacs@kosowsky.org, 15648@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Nov 04 17:45:17 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1VdNH9-00085g-TP for geb-bug-gnu-emacs@m.gmane.org; Mon, 04 Nov 2013 17:45:16 +0100 Original-Received: from localhost ([::1]:50918 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VdNH9-00068M-HP for geb-bug-gnu-emacs@m.gmane.org; Mon, 04 Nov 2013 11:45:15 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:55781) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VdNH2-00066Z-83 for bug-gnu-emacs@gnu.org; Mon, 04 Nov 2013 11:45:13 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VdNGx-0003YO-DL for bug-gnu-emacs@gnu.org; Mon, 04 Nov 2013 11:45:08 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:48605) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VdNGx-0003Xa-9w for bug-gnu-emacs@gnu.org; Mon, 04 Nov 2013 11:45:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1VdNGv-00084Y-Sl for bug-gnu-emacs@gnu.org; Mon, 04 Nov 2013 11:45:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Ted Zlatanov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 04 Nov 2013 16:45:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 15648 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 15648-submit@debbugs.gnu.org id=B15648.138358345630958 (code B ref 15648); Mon, 04 Nov 2013 16:45:01 +0000 Original-Received: (at 15648) by debbugs.gnu.org; 4 Nov 2013 16:44:16 +0000 Original-Received: from localhost ([127.0.0.1]:34390 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VdNGB-00083F-4E for submit@debbugs.gnu.org; Mon, 04 Nov 2013 11:44:15 -0500 Original-Received: from mail-qc0-f182.google.com ([209.85.216.182]:61568) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VdNG8-00082y-TP for 15648@debbugs.gnu.org; Mon, 04 Nov 2013 11:44:13 -0500 Original-Received: by mail-qc0-f182.google.com with SMTP id n7so4114851qcx.13 for <15648@debbugs.gnu.org>; Mon, 04 Nov 2013 08:44:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lifelogs.com; s=google; h=from:to:cc:subject:organization:references:mail-copies-to :gmane-reply-to-list:date:in-reply-to:message-id:user-agent :mime-version:content-type; bh=UWKHeLGrc5ohS4NHmO/EJkxZELNzJSIHpOu0yQVZfqI=; b=WNomKODMiL1kxvpcYvQB8LNmxPanBF+fVYMX5Hy7zs++FtZCjCdANIMXwZJqCMdMcl hNoKEBqvM9REx2OzJB45Wc3zdmiIcOIf0+6/QTWb2j5rdLhzhLyLwaivuV+jn9eANuIh uizTtWi8IuExn2nUgIF4BUfgItnCgAWVuAI2s= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:organization:references :mail-copies-to:gmane-reply-to-list:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=UWKHeLGrc5ohS4NHmO/EJkxZELNzJSIHpOu0yQVZfqI=; b=VftLrIsbCPPSH3glVGD70P4Vnl4o4OrDiZmiLqsm/4K6KIXTsjioyxqudg9pKuSiM8 VTKPr/XiRvDmIOSGPyuX28UrDkmTFUSKdFIxfISC/xOQ6E4mWYPagGwTs8RA17RSdhTs uJrftohcqf8+D74KVE2fQdUYw30zc/zwP2msWr2stXQiDVcns8trvJdTJBxC2q1aU2qv GzQO/NnTwAP7Ft5xga1EJMLLHZYx0CYSjVzMr5Wi28PLd94UmRfTTDE5A+CMsRjNnaw9 0R+2dVQeyRKvAhYh+jkBkOCs34bTBBQ1KOtojzJyVeUZ8RONAv/Hu/xOBOtpc4cXeXLw j8wg== X-Gm-Message-State: ALoCoQmyvmGsOL9rIB1IsO59dLxp0VbFj8my/8aFCk9nQV5Wl5SNNG3hn5nt4/avFCffIB25whu/ X-Received: by 10.224.165.146 with SMTP id i18mr2848996qay.114.1383583447191; Mon, 04 Nov 2013 08:44:07 -0800 (PST) Original-Received: from flea.lifelogs.com (c-98-229-61-72.hsd1.ma.comcast.net. [98.229.61.72]) by mx.google.com with ESMTPSA id k2sm56564130qan.8.2013.11.04.08.44.06 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Nov 2013 08:44:06 -0800 (PST) X-Face: bd.DQ~'29fIs`T_%O%C\g%6jW)yi[zuz6; d4V0`@y-~$#3P_Ng{@m+e4o<4P'#(_GJQ%TT= D}[Ep*b!\e,fBZ'j_+#"Ps?s2!4H2-Y"sx" Mail-Copies-To: never Gmane-Reply-To-List: yes In-Reply-To: <83a9hxgpt1.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 25 Oct 2013 21:37:14 +0300") User-Agent: Gnus/5.130008 (Ma Gnus v0.8) Emacs/24.3.50 (gnu/linux) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 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.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:79974 Archived-At: On Fri, 25 Oct 2013 21:37:14 +0300 Eli Zaretskii wrote: >> From: Ted Zlatanov >> Cc: emacs@kosowsky.org, 15648@debbugs.gnu.org >> Date: Fri, 25 Oct 2013 11:38:05 -0400 >> EZ> If so, perhaps the problem is that we leave the process object EZ> marked as a GnuTLS process, but with a NULL state? Should we remove EZ> the mark, or maybe delete the process object in gnutls-negotiate? >> >> I would abort with a message like any other error. EZ> Maybe you should install a change that does that, and see if it solves EZ> the problem. You mean like this? Should I have a special check for "gnutls_p is set but gnutls_state is NULL"? === modified file 'src/process.c' --- src/process.c 2013-11-04 06:09:03 +0000 +++ src/process.c 2013-11-04 16:43:26 +0000 @@ -4609,7 +4609,7 @@ { struct Lisp_Process *p = XPROCESS (chan_process[channel]); - if (p && p->gnutls_p && p->infd + if (p && p->gnutls_p && p->gnutls_state && p->infd && ((emacs_gnutls_record_check_pending (p->gnutls_state)) > 0)) @@ -4623,6 +4623,7 @@ { /* Check this specific channel. */ if (wait_proc->gnutls_p /* Check for valid process. */ + && p->gnutls_state /* Do we have pending data? */ && ((emacs_gnutls_record_check_pending (wait_proc->gnutls_state)) @@ -5004,7 +5005,7 @@ proc_buffered_char[channel] = -1; } #ifdef HAVE_GNUTLS - if (p->gnutls_p) + if (p->gnutls_p && p->gnutls_state) nbytes = emacs_gnutls_read (p, chars + carryover + buffered, readmax - buffered); else @@ -5498,7 +5499,7 @@ #endif { #ifdef HAVE_GNUTLS - if (p->gnutls_p) + if (p->gnutls_p && p->gnutls_state) written = emacs_gnutls_write (p, cur_buf, cur_len); else #endif EZ> We _begin_ by setting gnutls_state to NULL. What could possibly EZ> happen is that we somehow let the process object with a NULL state EZ> escape from the initialization step, and then EZ> wait_reading_process_output stumbles on it and tries to use it, EZ> because the gnutls_p flag is also set right at the beginning. EZ> How about if we set the gnutls_p flag only when the whole EZ> initialization succeeds completely? It's only then that the process EZ> is ready to be used in conjunction with GnuTLS, isn't it? You're absolutely right. Can you check if this patch is good? It looks OK to me. Thank you very much for the guidance. Ted === modified file 'src/gnutls.c' --- src/gnutls.c 2013-11-04 06:09:03 +0000 +++ src/gnutls.c 2013-11-04 16:36:18 +0000 @@ -810,7 +822,6 @@ c_hostname = SSDATA (hostname); state = XPROCESS (proc)->gnutls_state; - XPROCESS (proc)->gnutls_p = 1; if (TYPE_RANGED_INTEGERP (int, loglevel)) { @@ -833,7 +844,6 @@ emacs_gnutls_deinit (proc); /* Mark PROC as a GnuTLS process. */ - XPROCESS (proc)->gnutls_p = 1; XPROCESS (proc)->gnutls_state = NULL; XPROCESS (proc)->gnutls_x509_cred = NULL; XPROCESS (proc)->gnutls_anon_cred = NULL; @@ -1093,6 +1103,9 @@ fn_gnutls_x509_crt_deinit (gnutls_verify_cert); } + // Only set this flag if the whole initialization succeeded. + XPROCESS (proc)->gnutls_p = 1; + return gnutls_make_error (ret); }