From cbec7032ee36346649fc5ebecc4b1c01f01178f1 Mon Sep 17 00:00:00 2001 From: Scarlett Date: Thu, 15 Jan 2015 19:38:11 +0900 Subject: Add overflow detection Origin: http://marc.info/?l=openbsd-ports&m=142090828929750&w=2 * main.c: Call exit(1) when out of memory to avoid dereferencing null pointers when gc's malloc fails. * alloc.h: Replacements for w3m's allocation macros which add overflow detection and concentrate the macros in one file. * indep.h, libwc/charset.c, libwc/status.c, matrix.c: Use the overflow-detecting allocation macros from alloc.h. --- main.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'main.c') diff --git a/main.c b/main.c index 76256d6..cb15c9f 100644 --- a/main.c +++ b/main.c @@ -383,6 +383,13 @@ make_optional_header_string(char *s) return hs; } +static void * +die_oom(size_t bytes) +{ + fprintf(stderr, "Out of memory: %zu bytes unavailable!\n", bytes); + exit(1); +} + int main(int argc, char **argv, char **envp) { @@ -412,6 +419,7 @@ main(int argc, char **argv, char **envp) char **getimage_args = NULL; #endif /* defined(DONT_CALL_GC_AFTER_FORK) && defined(USE_IMAGE) */ GC_INIT(); + GC_set_oom_fn(die_oom); #if defined(ENABLE_NLS) || (defined(USE_M17N) && defined(HAVE_LANGINFO_CODESET)) setlocale(LC_ALL, ""); #endif -- cgit v1.2.3