From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Po Lu Newsgroups: gmane.emacs.devel Subject: Re: master eb37e4814e 3/3: Fix unlikely null pointer dereference Date: Sat, 28 May 2022 08:46:53 +0800 Message-ID: <87czfyeb5u.fsf@yahoo.com> References: <165367719442.14912.2771599004379547518@vcs2.savannah.gnu.org> <20220527184637.984F7C01683@vcs2.savannah.gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="14102"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.91 (gnu/linux) Cc: Paul Eggert To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat May 28 02:48:49 2022 Return-path: Envelope-to: ged-emacs-devel@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 1nukdN-0003Wr-L0 for ged-emacs-devel@m.gmane-mx.org; Sat, 28 May 2022 02:48:49 +0200 Original-Received: from localhost ([::1]:60222 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nukdM-0002PZ-8a for ged-emacs-devel@m.gmane-mx.org; Fri, 27 May 2022 20:48:48 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:49242) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nukbi-0001ZR-SN for emacs-devel@gnu.org; Fri, 27 May 2022 20:47:06 -0400 Original-Received: from sonic317-33.consmr.mail.ne1.yahoo.com ([66.163.184.44]:43079) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nukbh-0005je-5Q for emacs-devel@gnu.org; Fri, 27 May 2022 20:47:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1653698823; bh=2MO99zHLN/at/sclM8h31dodwCDl3C26k1Sw5x12lvk=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From:Subject:Reply-To; b=WGSQYONPxpQTZgQyTu9qa4d2rOXyNH2n+DNZWq0X8Pl4OQWmOGL2HorhHZizu1fJ6edon/E+OFA9CK7n7l/TiciCrQC+xmA2wQkaez3FbxJFs//kUSC0XfkyyjjPd+OjeL09FDtFXB4WAChDmsKsRRVrHcieJjUD0bMp+4MgLgkgxtQ/K59Jgz0Wd3EcFUMiXj2Ui57KtkzTRFLGdvhr9aWZTgOQRuZWX2whkAMaBdMRyeQqqcrtv/+jZfTwhRaF1J//DPQQv4XrrWV+taDHTXKAWjOOoB8oAsNm2Xx2WvhCXt/CBdANO/oILdbWsjStpIdZ4z3ACfcD8rSxYbxQeQ== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1653698823; bh=C1hnREzojFnxsgZjr/f/IxAqa4c6boYJcF9ls64nO7t=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=f+31PWkHDczu643G087cXWWCH0HIixDlkETFQGHeyJJtXYRo3KC1hyj3Q4FBiuBlVKjglG5x7KL+Kvw8jkZnLGgiI4wiR/R16Tp1Cr3FE8ny68D7ssm6fMPu1nrsBmIzwFn5vlnB5G/bc4yUOcbGmX9VWR0e0rDFVLbB4yMQIQKc4XON7PP0vKQad1UBz4f5hmfP4CNR4wNx9V5xOfuz3MwfKbvwlraR56geXETWrZo/nl4DL1bzVUmP+gOr4dG/rcC+uPARMJnEo9VnhBfkffh5CIHpiz4CxembO4+1aOlyV4QRpI+pjPC48vmGXrAHCeC4w3X3J9Nxi6+qBm2HqA== X-YMail-OSG: GT_CRzoVM1niOtmUyUoMtKDt7Qmtdw.85oT_mIUjQvuvTksF3riZFpjChmhNvY7 xLsGRs9QixE8dR92phAVv3x3QVA4x3uEclhRh2FYF233eP_yaVn2D4K09RNqM12M4779VjCqX4im o.OMakwaV.XvcYeZx4jVshA_.5F.tV.pOnqgjeuUn9qSEWQi_L96BJ8WQpxQDysBuxmUFAIP1vkB bZ58dL.Hbjl5zvqU7_j35JqVus0qF4fxKSTRg77XIG1AVIms_CUTcHrZbxiH83tAAu2Y2GRIVM7i 03B30PWyrXMMz8gA4qDvT326.NF9YBEzHQPw8kEHn8bKehux4IHgo05PI97YOzcGVvCwz_ayixog 1IY6lvVVCtVb4lYsJgE4bxiSfR76IaQsz6OjonTsVNBcl6R3McHi5ChOVRjUGEtvuBKGJ9ypwpX8 ._o.i6uk1295cx25blJlqbcp43MXtaqMOqfjchnQi79HHFPrV2IqShsqOKwpaomkfZQ8hWk99rwM 0FqNBm7nCZxA8L_w7f4b8sQLhZ0frVIke1VcKKvgyf_u6k5_unqF.C8Kd2oIm8dsbTuWXnSugOQ. wmY8FL_W8Y4M7nVQqgmuMMQI4NyPfc0wvakLSu54E2tfcmIP5vWM7ZIUQg5LFyXOomxKiaS5LsV3 gWvolOdEpZM3t_ogTCSzagt2S21C.jh2PZCQlnbt5jfK.qadQ0NzYgTm9mLmsCP3yTsfsY_m6gyG ei_r7.W4pUyxg.eDbABHVgKj3eCXBX7ev9BRVkSI_620ObN2dDFV9XpQHf6knfOAG1cOGI35nOqu 2lBvNf87w7gtG1RFLZYL0U5JU7Tn048sd7Na099Wk6 X-Sonic-MF: Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic317.consmr.mail.ne1.yahoo.com with HTTP; Sat, 28 May 2022 00:47:03 +0000 Original-Received: by hermes--canary-production-sg3-5f7658c994-rpd7c (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID d83206dbe63ad6b8cd219e61076a2456; Sat, 28 May 2022 00:46:57 +0000 (UTC) In-Reply-To: <20220527184637.984F7C01683@vcs2.savannah.gnu.org> (Paul Eggert's message of "Fri, 27 May 2022 14:46:36 -0400 (EDT)") X-Mailer: WebService/1.1.20225 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Received-SPF: pass client-ip=66.163.184.44; envelope-from=luangruo@yahoo.com; helo=sonic317-33.consmr.mail.ne1.yahoo.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, RCVD_IN_MSPIKE_H2=-0.001, 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-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:290324 Archived-At: Paul Eggert writes: > branch: master > commit eb37e4814e354befaa12f80dc5e75368ad489a1e > Author: Paul Eggert > Commit: Paul Eggert > > Fix unlikely null pointer dereference > > * src/xselect.c (Fx_get_atom_name): Fix unlikely core dump when > build_string is called on a null pointer. Found by GCC -fanalyzer. > --- > src/xselect.c | 20 ++++++++------------ > 1 file changed, 8 insertions(+), 12 deletions(-) > > diff --git a/src/xselect.c b/src/xselect.c > index ae15fecccc..3f35842daa 100644 > --- a/src/xselect.c > +++ b/src/xselect.c > @@ -2454,9 +2454,6 @@ If the value is 0 or the atom is not known, return the empty string. */) > (Lisp_Object value, Lisp_Object frame) > { > struct frame *f = decode_window_system_frame (frame); > - char *name = 0; > - char empty[] = ""; > - Lisp_Object ret = Qnil; > Display *dpy = FRAME_X_DISPLAY (f); > struct x_display_info *dpyinfo; > Atom atom; > @@ -2468,17 +2465,16 @@ If the value is 0 or the atom is not known, return the empty string. */) > > block_input (); > x_catch_errors (dpy); > - name = (atom ? x_get_atom_name (dpyinfo, atom, > - &need_sync) : empty); > + char *name = atom ? x_get_atom_name (dpyinfo, atom, &need_sync) : NULL; > had_errors_p = need_sync && x_had_errors_p (dpy); > x_uncatch_errors_after_check (); > - > - if (!had_errors_p) > - ret = build_string (name); > - > - if (atom && name) xfree (name); > - if (NILP (ret)) ret = empty_unibyte_string; > - > + Lisp_Object ret = empty_unibyte_string; > + if (name) > + { > + if (!had_errors_p) > + ret = build_string (name); > + xfree (name); > + } > unblock_input (); > > return ret; How can name be NULL if had_errors_p is false? x_get_atom_name always returns something if need_sync is false, and XGetAtomName always returns a string unless an error occured.