From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Linas Vepstas Newsgroups: gmane.lisp.guile.bugs Subject: bug#25498: Crash in open-file; patch attached Date: Fri, 20 Jan 2017 18:34:38 -0600 Message-ID: Reply-To: linasvepstas@gmail.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: blaine.gmane.org 1484958970 22452 195.159.176.226 (21 Jan 2017 00:36:10 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 21 Jan 2017 00:36:10 +0000 (UTC) To: 25498@debbugs.gnu.org Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Sat Jan 21 01:36:05 2017 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cUjf2-0005Fz-0R for guile-bugs@m.gmane.org; Sat, 21 Jan 2017 01:36:04 +0100 Original-Received: from localhost ([::1]:57949 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUjf6-0005KA-To for guile-bugs@m.gmane.org; Fri, 20 Jan 2017 19:36:08 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:50809) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUjf1-0005Jv-AV for bug-guile@gnu.org; Fri, 20 Jan 2017 19:36:04 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUjf0-0001TM-FE for bug-guile@gnu.org; Fri, 20 Jan 2017 19:36:03 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:38569) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUjf0-0001TI-Bj for bug-guile@gnu.org; Fri, 20 Jan 2017 19:36:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1cUjf0-00023F-5e for bug-guile@gnu.org; Fri, 20 Jan 2017 19:36:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Linas Vepstas Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Sat, 21 Jan 2017 00:36:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 25498 X-GNU-PR-Package: guile X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-guile@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.14849589127824 (code B ref -1); Sat, 21 Jan 2017 00:36:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 21 Jan 2017 00:35:12 +0000 Original-Received: from localhost ([127.0.0.1]:36768 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cUjeC-000228-9n for submit@debbugs.gnu.org; Fri, 20 Jan 2017 19:35:12 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:59740) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cUjeA-00021v-Rq for submit@debbugs.gnu.org; Fri, 20 Jan 2017 19:35:11 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUje4-0000wY-T3 for submit@debbugs.gnu.org; Fri, 20 Jan 2017 19:35:05 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:49212) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cUje4-0000wU-QN for submit@debbugs.gnu.org; Fri, 20 Jan 2017 19:35:04 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:50705) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cUje3-0005E7-Ix for bug-guile@gnu.org; Fri, 20 Jan 2017 19:35:04 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cUje2-0000vV-MM for bug-guile@gnu.org; Fri, 20 Jan 2017 19:35:03 -0500 Original-Received: from mail-qk0-x22d.google.com ([2607:f8b0:400d:c09::22d]:35970) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cUje2-0000rE-Hh for bug-guile@gnu.org; Fri, 20 Jan 2017 19:35:02 -0500 Original-Received: by mail-qk0-x22d.google.com with SMTP id 11so26297422qkl.3 for ; Fri, 20 Jan 2017 16:34:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:reply-to:from:date:message-id:subject:to; bh=XYdjM1teStqile/YxmHJILKdKpTA1Zl6Ztw0ZIENr/4=; b=uKKZIRxZYTb+DSi0TDf493KK7NAPRbviwQgZR30knpUK1bpx1j7jbY13iQ+chvfYm0 eFkx5GG7MsoImKG/AjlUk4XSCNe1nLfPSNaji8N1Y57SzZ6rNRlIcj1WQfVRA194BLor pYWf8sRfda3pygsNd7/kpR2DvJ545TtyEla7TRIGL857RtmX8CsP+4sVFhlka90jFX2A 5gTqArEzrXPas0hvfMu4b31xkdCVguxI/xevSR4KP7Wr/Jy0/qARcRMrGIacPbG1pfC0 KUwngJhQlzOTZHK/5DIAmLME27mZokJ3v3k1JDrembjiYps9Y6h0oi/caU/WmC9TGy2f EAwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:reply-to:from:date:message-id :subject:to; bh=XYdjM1teStqile/YxmHJILKdKpTA1Zl6Ztw0ZIENr/4=; b=I9jF9DkDI1dIfLYzW+pVpLPYSBSwf+Vxw2N1s4tUVj9QQlUg/EP+TYjoQ+uS53W6qW Ic12eRqDB2qR3lSSomn37G4ev9FTXCuDNBq/eazM5/6BcJpKvECcKHWpjD0IYwAiFuxf d+oW9amX448AHXxOTXL9+pkGrIpeMjoWUFqIVXhU9/ex8drFf1gkbvFgNM8Z2ceaM6bj 1BBDeSMbnEaNpEGRwJFStpXiSo/1Zj+LZLzY0P1J7VKy4N8HXaHmwQMlIou2qshpXDeD O/sIDZJoySC0+BbQHaYtAKF7kIbLUKumdvykluXR4k9f/QPAuxHUajI1Ys4I9+q+NPXi 2taQ== X-Gm-Message-State: AIkVDXLroOxjzZUIaH7kE6X5p0tMX5FGnvq4aLiB+vqaf4DwM4xFniO7Y/xrCx6AktvYol1O5yStmmM3kCQLtQ== X-Received: by 10.55.161.71 with SMTP id k68mr4625464qke.185.1484958899293; Fri, 20 Jan 2017 16:34:59 -0800 (PST) Original-Received: by 10.12.174.231 with HTTP; Fri, 20 Jan 2017 16:34:38 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: "bug-guile" Xref: news.gmane.org gmane.lisp.guile.bugs:8523 Archived-At: The following crashes instantly; I used single-quotes by accident. (open-file "/tmp/lg" 'w') Stack: Enter `,help' for help. scheme@(guile-user)> (open-file "/tmp/lg" 'w') Thread 1 "guile" received signal SIGSEGV, Segmentation fault. scm_i_mode_to_open_flags (mode=mode@entry=0x555555ac5660, is_binary=is_binary@entry=0x7fffffffd46c, FUNC_NAME=FUNC_NAME@entry=0x7ffff7b89a7d "open-file") at ../../libguile/fports.c:168 168 switch (*md) (gdb) bt #0 scm_i_mode_to_open_flags (mode=mode@entry=0x555555ac5660, is_binary=is_binary@entry=0x7fffffffd46c, FUNC_NAME=FUNC_NAME@entry=0x7ffff7b89a7d "open-file") at ../../libguile/fports.c:168 #1 0x00007ffff7b057e9 in scm_open_file_with_encoding ( filename=filename@entry=0x555555b7fd98, mode=mode@entry=0x555555ac5660, guess_encoding=0x4, encoding=0x4) at ../../libguile/fports.c:242 #2 0x00007ffff7b05b83 in scm_i_open_file (filename=0x555555b7fd98, mode=0x555555ac5660, keyword_args=) at ../../libguile/fports.c:380 #3 0x00007ffff7b6a221 in vm_debug_engine (thread=0x555555ac5660, vp=0x555555844f30, registers=0x54aad62357094bc, resume=39) at ../../libguile/vm-engine.c:760 A patch that seems reasonable to me: $ git diff diff --git a/libguile/fports.c b/libguile/fports.c index 8fa69933d..28e666b6a 100644 --- a/libguile/fports.c +++ b/libguile/fports.c @@ -230,6 +230,9 @@ scm_open_file_with_encoding (SCM filename, SCM mode, unsigned int retries; char *file; + if (SCM_UNLIKELY (!scm_is_string (mode))) + scm_wrong_type_arg_msg (FUNC_NAME, 2, mode, "mode to be string"); + if (SCM_UNLIKELY (!(scm_is_false (encoding) || scm_is_string (encoding)))) scm_wrong_type_arg_msg (FUNC_NAME, 0, encoding, "encoding to be string or false");