/hg/icedtea-web: PolicyEditor persists empty non-default codebas...

Andrew Azores aazores at redhat.com
Tue Jun 17 15:40:23 UTC 2014


On 06/03/2014 05:03 PM, aazores at icedtea.classpath.org wrote:
> changeset f02ad0ae6d86 in /hg/icedtea-web
> details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=f02ad0ae6d86
> author: Andrew Azores <aazores at redhat.com>
> date: Tue Jun 03 17:02:56 2014 -0400
>
> 	PolicyEditor persists empty non-default codebase entries
>
> 	2014-06-03  Andrew Azores  <aazores at redhat.com>
>
> 	    PolicyEditor persists empty non-default codebase entries
> 	    * netx/net/sourceforge/jnlp/security/policyeditor/PolicyEntry.java
> 	    (toString): return empty string only if the codebase both has no
> 	    permissions assigned and is also the default "All Applets" codebase
> 	    * netx/net/sourceforge/jnlp/security/policyeditor/PolicyFileModel.java
> 	    (savePolicyFile): release fileLock with try/finally
>
>
> diffstat:
>
>   ChangeLog                                                            |   9 ++
>   netx/net/sourceforge/jnlp/security/policyeditor/PolicyEntry.java     |   4 +-
>   netx/net/sourceforge/jnlp/security/policyeditor/PolicyFileModel.java |  31 ++++++---
>   3 files changed, 32 insertions(+), 12 deletions(-)
>
> diffs (75 lines):
>
> diff -r 8ddd8d86855c -r f02ad0ae6d86 ChangeLog
> --- a/ChangeLog	Tue Jun 03 14:25:41 2014 -0400
> +++ b/ChangeLog	Tue Jun 03 17:02:56 2014 -0400
> @@ -1,3 +1,12 @@
> +2014-06-03  Andrew Azores  <aazores at redhat.com>
> +
> +	PolicyEditor persists empty non-default codebase entries
> +	* netx/net/sourceforge/jnlp/security/policyeditor/PolicyEntry.java
> +	(toString): return empty string only if the codebase both has no
> +	permissions assigned and is also the default "All Applets" codebase
> +	* netx/net/sourceforge/jnlp/security/policyeditor/PolicyFileModel.java
> +	(savePolicyFile): release fileLock with try/finally
> +
>   2014-06-03  Lukasz Dracz  <ldracz at redhat.com>
>   
>   	This test expects a Null pointer exception however does not
> diff -r 8ddd8d86855c -r f02ad0ae6d86 netx/net/sourceforge/jnlp/security/policyeditor/PolicyEntry.java
> --- a/netx/net/sourceforge/jnlp/security/policyeditor/PolicyEntry.java	Tue Jun 03 14:25:41 2014 -0400
> +++ b/netx/net/sourceforge/jnlp/security/policyeditor/PolicyEntry.java	Tue Jun 03 17:02:56 2014 -0400
> @@ -69,7 +69,9 @@
>   
>       @Override
>       public String toString() {
> -        if (permissions.isEmpty() && customPermissions.isEmpty()) {
> +        // Empty codebase is the default "All Applets" codebase. If there are no permissions
> +        // applied to it, then don't bother recording it in the policy file.
> +        if (codebase.isEmpty() && permissions.isEmpty() && customPermissions.isEmpty()) {
>               return "";
>           }
>           final String newline = System.getProperty("line.separator");
> diff -r 8ddd8d86855c -r f02ad0ae6d86 netx/net/sourceforge/jnlp/security/policyeditor/PolicyFileModel.java
> --- a/netx/net/sourceforge/jnlp/security/policyeditor/PolicyFileModel.java	Tue Jun 03 14:25:41 2014 -0400
> +++ b/netx/net/sourceforge/jnlp/security/policyeditor/PolicyFileModel.java	Tue Jun 03 17:02:56 2014 -0400
> @@ -169,21 +169,30 @@
>           final String currentDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
>           sb.append("\n/* Generated by PolicyEditor at ").append(currentDate).append(" */");
>           sb.append(System.getProperty("line.separator"));
> -        final Set<PolicyEditorPermissions> enabledPermissions = new HashSet<>();
> -        FileLock fileLock = FileUtils.getFileLock(file.getAbsolutePath(), false, true);
> -        for (final String codebase : codebasePermissionsMap.keySet()) {
> -            enabledPermissions.clear();
> -            for (final Map.Entry<PolicyEditorPermissions, Boolean> entry : codebasePermissionsMap.get(codebase).entrySet()) {
> -                if (entry.getValue()) {
> -                    enabledPermissions.add(entry.getKey());
> +        FileLock fileLock = null;
> +        try {
> +            fileLock = FileUtils.getFileLock(file.getAbsolutePath(), false, true);
> +            final Set<PolicyEditorPermissions> enabledPermissions = new HashSet<>();
> +            for (final String codebase : codebasePermissionsMap.keySet()) {
> +                enabledPermissions.clear();
> +                for (final Map.Entry<PolicyEditorPermissions, Boolean> entry : codebasePermissionsMap.get(codebase).entrySet()) {
> +                    if (entry.getValue()) {
> +                        enabledPermissions.add(entry.getKey());
> +                    }
>                   }
> +                sb.append(new PolicyEntry(codebase, enabledPermissions, customPermissionsMap.get(codebase)).toString());
>               }
> -            sb.append(new PolicyEntry(codebase, enabledPermissions, customPermissionsMap.get(codebase)).toString());
> -        }
> -        try {
> -            fileLock.release();
>           } catch (final IOException e) {
>               OutputController.getLogger().log(e);
> +        } finally {
> +            if (fileLock != null) {
> +                try {
> +                    fileLock.release();
> +                } catch (final IOException e) {
> +                    OutputController.getLogger().log(e);
> +                }
> +
> +            }
>           }
>   
>           FileUtils.saveFile(sb.toString(), file);

Proposing to backport this for 1.5.1.

Thanks,

-- 
Andrew A

-------------- next part --------------
A non-text attachment was scrubbed...
Name: policyeditor-empty-entries-1.5-backport.patch
Type: text/x-patch
Size: 4329 bytes
Desc: not available
URL: <http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20140617/292f2119/policyeditor-empty-entries-1.5-backport.patch>


More information about the distro-pkg-dev mailing list