Avoid using NOTREACHED() in test code
Switch from NOTREACHED() to NOTREACHED_NORETURN(), or convert
unreachable conditionals into CHECKs.
Bug: pdfium:2008
Change-Id: Ic32de9e76ad07603251ed2a734ba8f8277e586a9
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/107751
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/samples/pdfium_test_write_helper.cc b/samples/pdfium_test_write_helper.cc
index 7ac49d7..9d57eb2 100644
--- a/samples/pdfium_test_write_helper.cc
+++ b/samples/pdfium_test_write_helper.cc
@@ -90,8 +90,7 @@
return "RichMedia";
if (subtype == FPDF_ANNOT_XFAWIDGET)
return "XFAWidget";
- NOTREACHED();
- return "";
+ NOTREACHED_NORETURN();
}
void AppendFlagString(const char* flag, std::string* output) {
@@ -134,8 +133,7 @@
return "Shading";
if (type == FPDF_PAGEOBJ_FORM)
return "Form";
- NOTREACHED();
- return "";
+ NOTREACHED_NORETURN();
}
std::vector<uint8_t> EncodePng(pdfium::span<const uint8_t> input,
@@ -162,7 +160,7 @@
/*discard_transparency=*/false);
break;
default:
- NOTREACHED();
+ NOTREACHED_NORETURN();
}
return png;
}
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
index 366088d..04b805d 100644
--- a/testing/embedder_test.cpp
+++ b/testing/embedder_test.cpp
@@ -24,8 +24,10 @@
#include "testing/utils/hash.h"
#include "testing/utils/path_service.h"
#include "third_party/base/check.h"
+#include "third_party/base/check_op.h"
#include "third_party/base/containers/contains.h"
#include "third_party/base/notreached.h"
+#include "third_party/base/numerics/checked_math.h"
#include "third_party/base/numerics/safe_conversions.h"
namespace {
@@ -540,10 +542,8 @@
void EmbedderTest::UnloadPageCommon(FPDF_PAGE page, bool do_events) {
DCHECK(form_handle());
int page_number = GetPageNumberForLoadedPage(page);
- if (page_number < 0) {
- NOTREACHED();
- return;
- }
+ CHECK_GE(page_number, 0);
+
if (do_events) {
FORM_DoPageAAction(page, form_handle(), FPDFPAGE_AACTION_CLOSE);
FORM_OnBeforeClosePage(page, form_handle());
@@ -563,10 +563,8 @@
ScopedFPDFBitmap EmbedderTest::RenderLoadedPageWithFlags(FPDF_PAGE page,
int flags) {
- if (GetPageNumberForLoadedPage(page) < 0) {
- NOTREACHED();
- return nullptr;
- }
+ int page_number = GetPageNumberForLoadedPage(page);
+ CHECK_GE(page_number, 0);
return RenderPageWithFlags(page, form_handle(), flags);
}
@@ -576,10 +574,8 @@
ScopedFPDFBitmap EmbedderTest::RenderSavedPageWithFlags(FPDF_PAGE page,
int flags) {
- if (GetPageNumberForSavedPage(page) < 0) {
- NOTREACHED();
- return nullptr;
- }
+ int page_number = GetPageNumberForSavedPage(page);
+ CHECK_GE(page_number, 0);
return RenderPageWithFlags(page, saved_form_handle(), flags);
}
@@ -681,7 +677,7 @@
case FPDFBitmap_BGRA:
return 4;
default:
- NOTREACHED();
+ NOTREACHED_NORETURN();
return 0;
}
}
@@ -733,10 +729,7 @@
DCHECK(saved_form_handle());
int page_number = GetPageNumberForSavedPage(page);
- if (page_number < 0) {
- NOTREACHED();
- return;
- }
+ CHECK_GE(page_number, 0);
FORM_DoPageAAction(page, saved_form_handle(), FPDFPAGE_AACTION_CLOSE);
FORM_OnBeforeClosePage(page, saved_form_handle());
@@ -853,15 +846,11 @@
unsigned char* buf,
unsigned long size) {
std::string* new_file = static_cast<std::string*>(param);
- if (!new_file || pos + size < pos) {
- NOTREACHED();
- return 0;
- }
+ CHECK(new_file);
- if (pos + size > new_file->size()) {
- NOTREACHED();
- return 0;
- }
+ pdfium::base::CheckedNumeric<size_t> end = pos;
+ end += size;
+ CHECK_LE(end.ValueOrDie(), new_file->size());
memcpy(buf, new_file->data() + pos, size);
return 1;
diff --git a/testing/fuzzers/pdfium_fuzzer_helper.cc b/testing/fuzzers/pdfium_fuzzer_helper.cc
index f011b18..f1040ad 100644
--- a/testing/fuzzers/pdfium_fuzzer_helper.cc
+++ b/testing/fuzzers/pdfium_fuzzer_helper.cc
@@ -20,7 +20,8 @@
#include "public/fpdf_dataavail.h"
#include "public/fpdf_ext.h"
#include "public/fpdf_text.h"
-#include "third_party/base/notreached.h"
+#include "third_party/base/check_op.h"
+#include "third_party/base/numerics/checked_math.h"
#include "third_party/base/span.h"
namespace {
@@ -34,10 +35,9 @@
unsigned char* pBuf,
unsigned long size) {
FuzzerTestLoader* pLoader = static_cast<FuzzerTestLoader*>(param);
- if (pos + size < pos || pos + size > pLoader->m_Span.size()) {
- NOTREACHED();
- return 0;
- }
+ pdfium::base::CheckedNumeric<size_t> end = pos;
+ end += size;
+ CHECK_LE(end.ValueOrDie(), pLoader->m_Span.size());
memcpy(pBuf, &pLoader->m_Span[pos], size);
return 1;
diff --git a/testing/image_diff/image_diff_png.cpp b/testing/image_diff/image_diff_png.cpp
index 694a240..e3ceb91 100644
--- a/testing/image_diff/image_diff_png.cpp
+++ b/testing/image_diff/image_diff_png.cpp
@@ -16,6 +16,7 @@
#include <string>
+#include "third_party/base/check_op.h"
#include "third_party/base/notreached.h"
#ifdef USE_SYSTEM_ZLIB
@@ -253,7 +254,7 @@
state->output_channels = 1;
break;
default:
- NOTREACHED();
+ NOTREACHED_NORETURN();
break;
}
} else if (channels == 4) {
@@ -271,12 +272,11 @@
state->output_channels = 4;
break;
default:
- NOTREACHED();
+ NOTREACHED_NORETURN();
break;
}
} else {
- NOTREACHED();
- longjmp(png_jmpbuf(png_ptr), 1);
+ NOTREACHED_NORETURN();
}
state->output->resize(state->width * state->output_channels * state->height);
@@ -288,11 +288,7 @@
int pass) {
PngDecoderState* state =
static_cast<PngDecoderState*>(png_get_progressive_ptr(png_ptr));
-
- if (static_cast<int>(row_num) > state->height) {
- NOTREACHED();
- return;
- }
+ CHECK_LE(static_cast<int>(row_num), state->height);
uint8_t* base = nullptr;
base = &state->output->front();
diff --git a/testing/test_loader.cpp b/testing/test_loader.cpp
index aac8429..a3fad8a 100644
--- a/testing/test_loader.cpp
+++ b/testing/test_loader.cpp
@@ -6,7 +6,8 @@
#include <string.h>
-#include "third_party/base/notreached.h"
+#include "third_party/base/check_op.h"
+#include "third_party/base/numerics/checked_math.h"
TestLoader::TestLoader(pdfium::span<const char> span) : m_Span(span) {}
@@ -16,10 +17,9 @@
unsigned char* pBuf,
unsigned long size) {
TestLoader* pLoader = static_cast<TestLoader*>(param);
- if (pos + size < pos || pos + size > pLoader->m_Span.size()) {
- NOTREACHED();
- return 0;
- }
+ pdfium::base::CheckedNumeric<size_t> end = pos;
+ end += size;
+ CHECK_LE(end.ValueOrDie(), pLoader->m_Span.size());
memcpy(pBuf, &pLoader->m_Span[pos], size);
return 1;