Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f5b8a6b authored by Svet Ganov's avatar Svet Ganov Committed by Android Git Automerger
Browse files

am 182f0a13: Merge "Crash apps that print malformed or password protected PDFs." into lmp-mr1-dev

* commit '182f0a13':
  Crash apps that print malformed or password protected PDFs.
parents ec5f374f 182f0a13
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -37,4 +37,5 @@ oneway interface IPrintDocumentAdapter {
    void write(in PageRange[] pages, in ParcelFileDescriptor fd,
            IWriteResultCallback callback, int sequence);
    void finish();
    void kill(String reason);
}
+21 −0
Original line number Diff line number Diff line
@@ -633,6 +633,17 @@ public final class PrintManager {
            }
        }

        @Override
        public void kill(String reason) {
            synchronized (mLock) {
                // If destroyed the handler is null.
                if (!isDestroyedLocked()) {
                    mHandler.obtainMessage(MyHandler.MSG_ON_KILL,
                            reason).sendToTarget();
                }
            }
        }

        @Override
        public void onActivityPaused(Activity activity) {
            /* do nothing */
@@ -719,6 +730,7 @@ public final class PrintManager {
            public static final int MSG_ON_LAYOUT = 2;
            public static final int MSG_ON_WRITE = 3;
            public static final int MSG_ON_FINISH = 4;
            public static final int MSG_ON_KILL = 5;

            public MyHandler(Looper looper) {
                super(looper, null, true);
@@ -794,6 +806,15 @@ public final class PrintManager {
                        }
                    } break;

                    case MSG_ON_KILL: {
                        if (DEBUG) {
                            Log.i(LOG_TAG, "onKill()");
                        }

                        String reason = (String) message.obj;
                        throw new RuntimeException(reason);
                    }

                    default: {
                        throw new IllegalArgumentException("Unknown message: "
                                + message.what);
+11 −2
Original line number Diff line number Diff line
@@ -89,8 +89,17 @@ static jlong nativeOpen(JNIEnv* env, jclass thiz, jint fd, jlong size) {

    if (!document) {
        const long error = FPDF_GetLastError();
        switch (error) {
            case FPDF_ERR_PASSWORD:
            case FPDF_ERR_SECURITY: {
                jniThrowException(env, "java/lang/SecurityException",
                        "cannot create document. Error:" + error);
            } break;
            default: {
                jniThrowException(env, "java/io/IOException",
                        "cannot create document. Error:" + error);
            } break;
        }
        destroyLibraryIfNeeded();
        return -1;
    }
+11 −2
Original line number Diff line number Diff line
@@ -82,8 +82,17 @@ static jlong nativeCreate(JNIEnv* env, jclass thiz, jint fd, jlong size) {

    if (!document) {
        const long error = FPDF_GetLastError();
        switch (error) {
            case FPDF_ERR_PASSWORD:
            case FPDF_ERR_SECURITY: {
                jniThrowException(env, "java/lang/SecurityException",
                        "cannot create document. Error:" + error);
            } break;
            default: {
                jniThrowException(env, "java/io/IOException",
                        "cannot create document. Error:" + error);
            } break;
        }
        destroyLibraryIfNeeded();
        return -1;
    }
+4 −0
Original line number Diff line number Diff line
@@ -59,6 +59,10 @@ public final class PdfEditor {
     *
     * @param input Seekable file descriptor to read from.
     *
     * @throws java.io.IOException If an error occurs while reading the file.
     * @throws java.lang.SecurityException If the file requires a password or
     *         the security scheme is not supported.
     *
     * @see #close()
     */
    public PdfEditor(@NonNull ParcelFileDescriptor input) throws IOException {
Loading