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

Commit 182f0a13 authored by Svet Ganov's avatar Svet Ganov Committed by Android (Google) Code Review
Browse files

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

parents a1b9e3d7 fce84f03
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