Normalize MediaBox and CropBox in FPDFPage_Flatten()

Fixed: chromium:889099
Change-Id: Id10844bce706603ce10365c258bef86adeb1b189
Bug: 889099
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/69173
Commit-Queue: Daniel Hosseinian <dhoss@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_flatten.cpp b/fpdfsdk/fpdf_flatten.cpp
index 45b6c35..dc66b4d 100644
--- a/fpdfsdk/fpdf_flatten.cpp
+++ b/fpdfsdk/fpdf_flatten.cpp
@@ -271,12 +271,15 @@
   if (pPageDict->KeyExist(pdfium::page_object::kCropBox))
     rcOriginalMB = pPageDict->GetRectFor(pdfium::page_object::kCropBox);
 
+  rcOriginalMB.Normalize();
   if (rcOriginalMB.IsEmpty())
     rcOriginalMB = CFX_FloatRect(0.0f, 0.0f, 612.0f, 792.0f);
 
   CFX_FloatRect rcOriginalCB;
-  if (pPageDict->KeyExist(pdfium::page_object::kCropBox))
+  if (pPageDict->KeyExist(pdfium::page_object::kCropBox)) {
     rcOriginalCB = pPageDict->GetRectFor(pdfium::page_object::kCropBox);
+    rcOriginalCB.Normalize();
+  }
   if (rcOriginalCB.IsEmpty())
     rcOriginalCB = rcOriginalMB;
 
diff --git a/fpdfsdk/fpdf_flatten_embeddertest.cpp b/fpdfsdk/fpdf_flatten_embeddertest.cpp
index 94380db..112a322 100644
--- a/fpdfsdk/fpdf_flatten_embeddertest.cpp
+++ b/fpdfsdk/fpdf_flatten_embeddertest.cpp
@@ -73,13 +73,13 @@
 TEST_F(FPDFFlattenEmbedderTest, BUG_889099) {
 #if defined(OS_WIN)
   constexpr char kPageHash[] = "8c6e1dab0a15072f2c9c0ca240fdc739";
-  constexpr char kFlattenedPageHash[] = "b8e2a9e0ac526895a01937ae6a57fefb";
+  constexpr char kFlattenedPageHash[] = "9fb932ce7f370c0e68eec0a5d4d76271";
 #elif defined(OS_MACOSX)
   constexpr char kPageHash[] = "d43f54c60b325726392a558f861402a9";
-  constexpr char kFlattenedPageHash[] = "84d551f3a260db7922de01893962112a";
+  constexpr char kFlattenedPageHash[] = "627f143efb920a5e7ddd311e963b9c66";
 #else
   constexpr char kPageHash[] = "51f35e80dbc8a69a024b5a02aa64d463";
-  constexpr char kFlattenedPageHash[] = "d2d48eadc17d9ec3090d99bdad161274";
+  constexpr char kFlattenedPageHash[] = "ef01f57507662ec9aef7cc7cff92f96c";
 #endif
 
   EXPECT_TRUE(OpenDocument("bug_889099.pdf"));
@@ -95,9 +95,7 @@
 
   UnloadPage(page);
 
-  // TODO(crbug.com/889099): The size of the flattened page should not be
-  // different that that of the original one.
-  VerifySavedDocument(612, 792, kFlattenedPageHash);
+  VerifySavedDocument(300, 400, kFlattenedPageHash);
 }
 
 // TODO(crbug.com/pdfium/11): Fix this test and enable.