"Safe" extension module (release beta1) for Perl5. Copyright (C) Malcolm Beattie 1995 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. You can also distribute under the terms of the Artistic License detailed in the perl5 distribution itself. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. This software is licensed under the GNU General Public License INTRODUCTION This is the beta2 release of a Safe extension to perl5. Since the extension attempts to provide a safe environment in which to execute possibly unsafe perl code, you should (re)read the paragraphs above concerning lack of warranty. This extension requires that your version of perl5 supports operator masks. There are three possibilities, depending on how recent your version of perl5 is. (1) If you have a version earlier than perl5.001m then you need to apply the patch file opmask.patch file from this distribution. You also need to include the compilation option -DUSE_OP_MASK when you configure perl to be built. Versions of perl5 earlier than perl5.001e will not work at all with this extension and you should upgrade. (2) If you are using perl5.001m or later and there is still a line #ifdef USE_OP_MASK in op.c then you just need to include the compilation option -DUSE_OP_MASK when you configure perl to be built. (3) If you are using a newer version of perl then it's possible that either the #ifdef USE_OP_MASK is absent (and hence the #define CHECKOP code is always used) or else #define USE_OP_MASK may be included by default. In either case, you would not need to do anything special to get your copy of perl to use operator masks. INSTALLATION Apply the above mentioned patch, if necessary, to get an op_mask-aware version of perl. Then proceed as with any other perl5 extension: unpack the distribution *away from* the main perl source hierarchy and type perl Makefile.PL Then type make provided dynamic extensions are supported on your platform. There is a bug in the version of make supplied with OSF/1. For OSF/1 you'll need to type "make dynamic" or else use GNU make. If you don't want to use dynamic loading, then make perl should do the trick. Try it out with make test If the t/mask.t test fails then you should check that your version of perl has the necessary code in op.c to understand operator masks. Re-read the introduction section above to check what needs to be done. CHANGES There are only two differences between beta1. One is a slight change to Safe.pm which corrects the way $_ and @_ are shared with new Safe compartments. Formerly, code in a compartment which used the "package" statement to switch packages failed to pick up the correct magic $_ and @_ in the new package. The other change was to Safe.xs and made END { } blocks be ignored when evaluated in Safe compartments. Formerly, END { } blocks written in Safe compartments were executed when the whole program finished in a context which potentially left some access to code outside the compartment. Since this is a security hole, I've made a new release of the Safe distribution for safety's sake. Malcolm Beattie mbeattie@sable.ox.ac.uk pre-release 26 April 1995 alpha1 26 May 1995 alpha2 19 June 1995 beta1 22 August 1995 beta2 31 August 1995