[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-2d-dev
Subject:    Re: [OpenJDK 2D-Dev] RFR: 8181571: printing to CUPS fails on mac sandbox app
From:       NikolayTach <github.com+42199859+nikolaytach () openjdk ! java ! net>
Date:       2021-07-28 17:21:30
Message-ID: 63JwCGX6p50e5FOnMIuUEOUKrfIm4HkJXEO55VBeHWg=.ea74605e-ff56-4526-b2f8-a5d5f1fd8995 () github ! com
[Download RAW message or body]

On Wed, 21 Jul 2021 15:45:55 GMT, Alexander Scherbatiy <alexsch@openjdk.org> wrote:

> The issue is reproduced on macOS Big Sur 11.0.1 with jdk 16.0.1+9.
> 
> Create a native macOS app from the Hello.java file, sign and run it in sandbox:
> 
> import javax.print.*;
> import javax.swing.*;
> 
> public class Hello {
> 
> public static void main(String[] args) throws Exception {
> SwingUtilities.invokeAndWait(() -> {
> boolean isSandboxed = System.getenv("APP_SANDBOX_CONTAINER_ID") != null;
> PrintService defaultPrinter = PrintServiceLookup.lookupDefaultPrintService();
> PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
> 
> StringBuilder builder = new StringBuilder();
> builder.append("is sandboxed: ").append(isSandboxed).append("\n");
> builder.append("default printer: ").append(defaultPrinter).append("\n");
> int size = services.length;
> for (int i = 0; i < size; i++) {
> builder.append("printer[").append(i).append("]=").append(services[i]).append("\n");
> }
> JOptionPane.showMessageDialog(null, builder.toString());
> });
> }
> }
> 
> The signed app in sandbox shows null default printer and \
>                 PrintServiceLookup.lookupPrintServices(null, null) returns "Unix \
>                 Printer: lp".
> ![PrintSandboxedApp](https://bugs.openjdk.java.net/secure/attachment/95629/PrintSandboxedApp.png)
>  
> The problem has been discussed on  2d-dev mail list:
> https://mail.openjdk.java.net/pipermail/2d-dev/2017-June/008375.html
> https://mail.openjdk.java.net/pipermail/2d-dev/2017-July/008418.html
> 
> According to the discussion:
> 
> > I've submitted a DTS incident to Apple and a friend there has followed-up.
> > Their unofficial position is that java should be connecting to the cups interface \
> > returned by the cupsServer() function and not changing the interface string to \
> > "localhost". Security changes in 10.12.4 reject the TCP connection which they say \
> > confuses network-client access with print access.  They don't seem interested in \
> > loosening that change.
> 
> 
> The proposed solution is to use the domain socket pathname in httpConnect(...) cups \
> function and cupsGetDests(...) to get list of printers from cups  when the app is \
> signed and is run in sandbox on MacOs.

[JDK-8247768 ](https://bugs.openjdk.java.net/browse/JDK-8247768)
Same here played 6 times yet moved, 8 issues missed.

-------------

PR: https://git.openjdk.java.net/jdk/pull/4861


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic