From 4847d8cdb3bfd9b30a10bfed848174250475a69b Mon Sep 17 00:00:00 2001 From: rofl0r Date: Sat, 12 Sep 2020 21:00:17 +0100 Subject: add_new_errorpage(): fix segfault accessing global config another fallout of the config refactoring finished by 2e02dce0c3de4a231f74b44c34647406de507768. apparently no one using the ErrorFile directive used git master during the last months, as there have been no reports about this issue. --- src/conf.c | 2 +- src/html-error.c | 9 +++++---- src/html-error.h | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/conf.c b/src/conf.c index bf2458f..0d164a6 100644 --- a/src/conf.c +++ b/src/conf.c @@ -815,7 +815,7 @@ static HANDLE_FUNC (handle_errorfile) unsigned long int err = get_long_arg (line, &match[2]); char *page = get_string_arg (line, &match[4]); - add_new_errorpage (page, err); + add_new_errorpage (conf, page, err); safefree (page); return 0; } diff --git a/src/html-error.c b/src/html-error.c index c94dbd7..d643aaa 100644 --- a/src/html-error.c +++ b/src/html-error.c @@ -37,17 +37,18 @@ #define ERRORNUM_BUFSIZE 8 /* this is more than required */ #define ERRPAGES_BUCKETCOUNT 16 -int add_new_errorpage (char *filepath, unsigned int errornum) +int add_new_errorpage (struct config_s *conf, char *filepath, + unsigned int errornum) { char errornbuf[ERRORNUM_BUFSIZE]; - config->errorpages = hashmap_create (ERRPAGES_BUCKETCOUNT); - if (!config->errorpages) + conf->errorpages = hashmap_create (ERRPAGES_BUCKETCOUNT); + if (!conf->errorpages) return (-1); snprintf (errornbuf, ERRORNUM_BUFSIZE, "%u", errornum); - if (hashmap_insert (config->errorpages, errornbuf, + if (hashmap_insert (conf->errorpages, errornbuf, filepath, strlen (filepath) + 1) < 0) return (-1); diff --git a/src/html-error.h b/src/html-error.h index 03cec98..c133cef 100644 --- a/src/html-error.h +++ b/src/html-error.h @@ -23,8 +23,9 @@ /* Forward declaration */ struct conn_s; +struct config_s; -extern int add_new_errorpage (char *filepath, unsigned int errornum); +extern int add_new_errorpage (struct config_s *, char *filepath, unsigned int errornum); extern int send_http_error_message (struct conn_s *connptr); extern int indicate_http_error (struct conn_s *connptr, int number, const char *message, ...); -- cgit v1.2.3