diff --git a/src/examples/https_fileserver_example.c b/src/examples/https_fileserver_example.c index c07e274a..6fb1d9d8 100644 --- a/src/examples/https_fileserver_example.c +++ b/src/examples/https_fileserver_example.c @@ -131,7 +131,11 @@ http_ahc (void *cls, } *ptr = NULL; /* reset when done */ - file = fopen (&url[1], "rb"); + if ( (0 == stat (url, &buf)) && + (S_ISREG (buf.st_mode)) ) + file = fopen (&url[1], "rb"); + else + file = NULL; if (file == NULL) { response = MHD_create_response_from_data (strlen (EMPTY_PAGE), @@ -142,11 +146,15 @@ http_ahc (void *cls, } else { - stat (url, &buf); response = MHD_create_response_from_callback (buf.st_size, 32 * 1024, /* 32k PAGE_NOT_FOUND size */ &file_reader, file, (MHD_ContentReaderFreeCallback) & fclose); + if (response == NULL) + { + fclose (file); + return MHD_NO; + } ret = MHD_queue_response (connection, MHD_HTTP_OK, response); MHD_destroy_response (response); }