1 /*
   2  * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 /**
  25  * Try to access System properties safe to read for any code.
  26  * No security exception expected.
  27  *
  28  * @test
  29  * @security
  30  * @run
  31  * @bug 8033924: Default permissions are not given for eval code
  32  */
  33 
  34 var propNames = [
  35    "java.version",
  36    "java.vendor",
  37    "java.vendor.url",
  38    "java.class.version",
  39    "os.name",
  40    "os.version",
  41    "os.arch",
  42    "file.separator",
  43    "path.separator",
  44    "line.separator",
  45    "java.specification.version",
  46    "java.specification.vendor",
  47    "java.specification.name",
  48    "java.vm.specification.version",
  49    "java.vm.specification.vendor",
  50    "java.vm.specification.name",
  51    "java.vm.version",
  52    "java.vm.vendor",
  53    "java.vm.name"
  54 ];
  55 
  56 // no security exception expected
  57 for (var p in propNames) {
  58     java.lang.System.getProperty(propNames[p]);
  59 }
  60 
  61 // no security exception expected
  62 for (var p in propNames) {
  63     var name = propNames[p];
  64     eval('java.lang.System.getProperty(name)');
  65 }