From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Vibhav Pant Newsgroups: gmane.emacs.devel Subject: [PATCH] unsafep: Add support for (funcall) Date: Tue, 28 Feb 2017 00:23:00 +0530 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Trace: blaine.gmane.org 1488221668 20058 195.159.176.226 (27 Feb 2017 18:54:28 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 27 Feb 2017 18:54:28 +0000 (UTC) To: "emacs-devel@gnu.org" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Feb 27 19:54:23 2017 Return-path: Envelope-to: ged-emacs-devel@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 1ciQRB-0004bl-Lv for ged-emacs-devel@m.gmane.org; Mon, 27 Feb 2017 19:54:21 +0100 Original-Received: from localhost ([::1]:55775 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ciQRH-0002CS-Kx for ged-emacs-devel@m.gmane.org; Mon, 27 Feb 2017 13:54:27 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34918) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ciQQG-0001Vx-7i for emacs-devel@gnu.org; Mon, 27 Feb 2017 13:53:25 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ciQQF-00015f-Fv for emacs-devel@gnu.org; Mon, 27 Feb 2017 13:53:24 -0500 Original-Received: from mail-yw0-x244.google.com ([2607:f8b0:4002:c05::244]:34711) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ciQQF-00015G-BK for emacs-devel@gnu.org; Mon, 27 Feb 2017 13:53:23 -0500 Original-Received: by mail-yw0-x244.google.com with SMTP id 203so6784762ywz.1 for ; Mon, 27 Feb 2017 10:53:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=XQqMxzH5ecktMuPz37Khr6zzVRb9octU554VJ7oOCbM=; b=kxqI+8UCGtqBbGMps2I4q4pWO8G3ZG70kd1rAFdbroSK4pL5MSZx9ZovSLP4vgmFYp 3DGL+cFICY+GkIdmOPHiSUEq5FTk4mxaMR4pg0X1a5ERbtXIZuwo8dy9YSxbKoRaxUxz QFnr6jSg6nu6GaN+PuD7O8hobMRV//e7W005Q1It4yFZjZ0Q1+O26Ey9xWdfbIAaaKvj GtRbHbVGZyoTCem7Dz01j16gBmK+CImH8uAaLXbUn60GApoDV6IpD7+MAEx6iGc0v1h9 Qgo5Uc1vD9n9niNMTGQr100IF3eqZJtH3G55ArfK+D+BNbGZHNyUexhwcGsvuX6Aumu9 kYAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=XQqMxzH5ecktMuPz37Khr6zzVRb9octU554VJ7oOCbM=; b=MGplBmhC+fwNn5FaaYiRQPRRg99myDHHEWVnGuIlwk/g/K3iWZS7zY8fnm6HFqhlWF 5Dcit82Ufrw9xBgvkPgyL9qsXuDKsI6iud/MnGidwsgX5a5eoI+zVF3hdg1Owaf/wjqw saSVKqWRhsZrYaNptpA2OUkqmxaVUVHj+tydnZhl4LKiXfm87cHxwqtRVw8MsRYMvcLK TJN9RZSIACibK6X2/Xua1/s+OCghbu3v6nIUPTTbfR1ZsOMSLBwk9+PIiZnN7mcJrnpx ptevaoR6YAkoYh9lYKC0GUb68D7RmKbR1MDEULdutgkPMMq+WYjuk+afTvAvSbfbtjpP MNIA== X-Gm-Message-State: AMke39kIKUd7KxqsBQehVraPMgx1Qjmdlu8eAmnAYeiaxOr4r7Nz6w5yhd+XfeSufF9l0yL1jo6MPkchIXzjOA== X-Received: by 10.13.218.195 with SMTP id c186mr13571762ywe.15.1488221600956; Mon, 27 Feb 2017 10:53:20 -0800 (PST) Original-Received: by 10.13.212.150 with HTTP; Mon, 27 Feb 2017 10:53:00 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c05::244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 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.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:212625 Archived-At: The following patch makes (unsafep) check funcall forms. Right now, it only works while calling side-effect-free functions like car and cdr. In the future, I'd like to extend this to add support for looking up and checking (symbol-function) for other functions too. Would appreciate some feedback before I push this. Thanks, Vibhav -- Vibhav Pant vibhavp@gmail.com diff --git a/lisp/emacs-lisp/unsafep.el b/lisp/emacs-lisp/unsafep.el index 1ab65a044e..beba6895b8 100644 --- a/lisp/emacs-lisp/unsafep.el +++ b/lisp/emacs-lisp/unsafep.el @@ -205,6 +205,12 @@ unsafep ((eq fun '\`) ;; Backquoted form - safe if its expansion is. (unsafep (cdr (backquote-process (cadr form))))) + ((eq fun 'funcall) + (let ((func (nth 1 form)) + (args (nthcdr 2 form))) + (if (eq (car-safe func) 'quote) + (unsafep (cons (eval func) args) unsafep-vars) + (setq reason `(function ,func))))) (t ;;First unsafep-function call above wasn't nil, no special case applies reason)))))