summaryrefslogtreecommitdiff
path: root/tests/core/errors.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/core/errors.c')
-rw-r--r--tests/core/errors.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/core/errors.c b/tests/core/errors.c
index b6364100b..11e0bb2bb 100644
--- a/tests/core/errors.c
+++ b/tests/core/errors.c
@@ -149,3 +149,24 @@ void test_core_errors__integer_overflow_alloc_add(void)
cl_assert_equal_i(GITERR_NOMEMORY, giterr_last()->klass);
cl_assert_equal_s("Out of memory", giterr_last()->message);
}
+
+void test_core_errors__integer_overflow_sets_oom(void)
+{
+ giterr_clear();
+ cl_assert(!GIT_ALLOC_OVERFLOW_ADD(SIZE_MAX-1, 1));
+ cl_assert_equal_p(NULL, giterr_last());
+
+ giterr_clear();
+ cl_assert(!GIT_ALLOC_OVERFLOW_ADD(42, 69));
+ cl_assert_equal_p(NULL, giterr_last());
+
+ giterr_clear();
+ cl_assert(GIT_ALLOC_OVERFLOW_ADD(SIZE_MAX, SIZE_MAX));
+ cl_assert_equal_i(GITERR_NOMEMORY, giterr_last()->klass);
+ cl_assert_equal_s("Out of memory", giterr_last()->message);
+
+ giterr_clear();
+ cl_assert(GIT_ALLOC_OVERFLOW_MULTIPLY(SIZE_MAX, SIZE_MAX));
+ cl_assert_equal_i(GITERR_NOMEMORY, giterr_last()->klass);
+ cl_assert_equal_s("Out of memory", giterr_last()->message);
+}