mirror of
https://github.com/cesanta/mongoose.git
synced 2025-01-14 09:48:01 +08:00
Handle calloc failures
This commit is contained in:
parent
7200f079bf
commit
8e52075636
22
mongoose.c
22
mongoose.c
@ -801,10 +801,14 @@ void mg_http_serve_file(struct mg_connection *c, struct mg_http_message *hm,
|
||||
fclose(fp);
|
||||
} else {
|
||||
struct http_data *d = (struct http_data *) calloc(1, sizeof(*d));
|
||||
d->fp = fp;
|
||||
d->old_pfn_data = c->pfn_data;
|
||||
c->pfn = static_cb;
|
||||
c->pfn_data = d;
|
||||
if (d == NULL) {
|
||||
mg_error(c, "static HTTP OOM");
|
||||
} else {
|
||||
d->fp = fp;
|
||||
d->old_pfn_data = c->pfn_data;
|
||||
c->pfn = static_cb;
|
||||
c->pfn_data = d;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3320,6 +3324,10 @@ static void debug_cb(void *c, int lev, const char *s, int n, const char *s2) {
|
||||
int mg_tls_init(struct mg_connection *c, struct mg_tls_opts *opts) {
|
||||
struct mg_tls *tls = (struct mg_tls *) calloc(1, sizeof(*tls));
|
||||
int rc = 0;
|
||||
if (tls == NULL) {
|
||||
mg_error(c, "TLS OOM");
|
||||
goto fail;
|
||||
}
|
||||
LOG(LL_DEBUG, ("%lu Setting TLS, CA: %s, cert: %s, key: %s", c->id,
|
||||
opts->ca == NULL ? "null" : opts->ca,
|
||||
opts->cert == NULL ? "null" : opts->cert,
|
||||
@ -3458,6 +3466,12 @@ int mg_tls_init(struct mg_connection *c, struct mg_tls_opts *opts) {
|
||||
const char *id = "mongoose";
|
||||
static unsigned char s_initialised = 0;
|
||||
int rc;
|
||||
|
||||
if (tls == NULL) {
|
||||
mg_error(c, "TLS OOM");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!s_initialised) {
|
||||
SSL_library_init();
|
||||
s_initialised++;
|
||||
|
@ -233,8 +233,7 @@ typedef unsigned short uint16_t;
|
||||
typedef short int16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
typedef int int32_t;
|
||||
typedef int bool;
|
||||
enum { false = 0, true = 1 };
|
||||
typedef enum { false = 0, true = 1 } bool;
|
||||
#else
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
@ -12,8 +12,7 @@ typedef unsigned short uint16_t;
|
||||
typedef short int16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
typedef int int32_t;
|
||||
typedef int bool;
|
||||
enum { false = 0, true = 1 };
|
||||
typedef enum { false = 0, true = 1 } bool;
|
||||
#else
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
12
src/http.c
12
src/http.c
@ -383,10 +383,14 @@ void mg_http_serve_file(struct mg_connection *c, struct mg_http_message *hm,
|
||||
fclose(fp);
|
||||
} else {
|
||||
struct http_data *d = (struct http_data *) calloc(1, sizeof(*d));
|
||||
d->fp = fp;
|
||||
d->old_pfn_data = c->pfn_data;
|
||||
c->pfn = static_cb;
|
||||
c->pfn_data = d;
|
||||
if (d == NULL) {
|
||||
mg_error(c, "static HTTP OOM");
|
||||
} else {
|
||||
d->fp = fp;
|
||||
d->old_pfn_data = c->pfn_data;
|
||||
c->pfn = static_cb;
|
||||
c->pfn_data = d;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
10
src/tls.c
10
src/tls.c
@ -64,6 +64,10 @@ static void debug_cb(void *c, int lev, const char *s, int n, const char *s2) {
|
||||
int mg_tls_init(struct mg_connection *c, struct mg_tls_opts *opts) {
|
||||
struct mg_tls *tls = (struct mg_tls *) calloc(1, sizeof(*tls));
|
||||
int rc = 0;
|
||||
if (tls == NULL) {
|
||||
mg_error(c, "TLS OOM");
|
||||
goto fail;
|
||||
}
|
||||
LOG(LL_DEBUG, ("%lu Setting TLS, CA: %s, cert: %s, key: %s", c->id,
|
||||
opts->ca == NULL ? "null" : opts->ca,
|
||||
opts->cert == NULL ? "null" : opts->cert,
|
||||
@ -202,6 +206,12 @@ int mg_tls_init(struct mg_connection *c, struct mg_tls_opts *opts) {
|
||||
const char *id = "mongoose";
|
||||
static unsigned char s_initialised = 0;
|
||||
int rc;
|
||||
|
||||
if (tls == NULL) {
|
||||
mg_error(c, "TLS OOM");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!s_initialised) {
|
||||
SSL_library_init();
|
||||
s_initialised++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user