mirror of
https://github.com/cesanta/mongoose.git
synced 2026-11-13 17:00:19 +00:00
Handle calloc failures
This commit is contained in:
1 parent
7200f079bf
commit
8e52075636
5 files changed
+38
-12
No files matched your search
+18
-4
@@ -801,10 +801,14 @@ void mg_http_serve_file(struct mg_connection *c, struct mg_http_message *hm,
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
} else {
|
} else {
|
||||||
struct http_data *d = (struct http_data *) calloc(1, sizeof(*d));
|
struct http_data *d = (struct http_data *) calloc(1, sizeof(*d));
|
||||||
d->fp = fp;
|
if (d == NULL) {
|
||||||
d->old_pfn_data = c->pfn_data;
|
mg_error(c, "static HTTP OOM");
|
||||||
c->pfn = static_cb;
|
} else {
|
||||||
c->pfn_data = d;
|
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) {
|
int mg_tls_init(struct mg_connection *c, struct mg_tls_opts *opts) {
|
||||||
struct mg_tls *tls = (struct mg_tls *) calloc(1, sizeof(*tls));
|
struct mg_tls *tls = (struct mg_tls *) calloc(1, sizeof(*tls));
|
||||||
int rc = 0;
|
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,
|
LOG(LL_DEBUG, ("%lu Setting TLS, CA: %s, cert: %s, key: %s", c->id,
|
||||||
opts->ca == NULL ? "null" : opts->ca,
|
opts->ca == NULL ? "null" : opts->ca,
|
||||||
opts->cert == NULL ? "null" : opts->cert,
|
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";
|
const char *id = "mongoose";
|
||||||
static unsigned char s_initialised = 0;
|
static unsigned char s_initialised = 0;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
if (tls == NULL) {
|
||||||
|
mg_error(c, "TLS OOM");
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
if (!s_initialised) {
|
if (!s_initialised) {
|
||||||
SSL_library_init();
|
SSL_library_init();
|
||||||
s_initialised++;
|
s_initialised++;
|
||||||
|
|||||||
+1
-2
@@ -233,8 +233,7 @@ typedef unsigned short uint16_t;
|
|||||||
typedef short int16_t;
|
typedef short int16_t;
|
||||||
typedef unsigned int uint32_t;
|
typedef unsigned int uint32_t;
|
||||||
typedef int int32_t;
|
typedef int int32_t;
|
||||||
typedef int bool;
|
typedef enum { false = 0, true = 1 } bool;
|
||||||
enum { false = 0, true = 1 };
|
|
||||||
#else
|
#else
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|||||||
+1
-2
@@ -12,8 +12,7 @@ typedef unsigned short uint16_t;
|
|||||||
typedef short int16_t;
|
typedef short int16_t;
|
||||||
typedef unsigned int uint32_t;
|
typedef unsigned int uint32_t;
|
||||||
typedef int int32_t;
|
typedef int int32_t;
|
||||||
typedef int bool;
|
typedef enum { false = 0, true = 1 } bool;
|
||||||
enum { false = 0, true = 1 };
|
|
||||||
#else
|
#else
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|||||||
+8
-4
@@ -383,10 +383,14 @@ void mg_http_serve_file(struct mg_connection *c, struct mg_http_message *hm,
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
} else {
|
} else {
|
||||||
struct http_data *d = (struct http_data *) calloc(1, sizeof(*d));
|
struct http_data *d = (struct http_data *) calloc(1, sizeof(*d));
|
||||||
d->fp = fp;
|
if (d == NULL) {
|
||||||
d->old_pfn_data = c->pfn_data;
|
mg_error(c, "static HTTP OOM");
|
||||||
c->pfn = static_cb;
|
} else {
|
||||||
c->pfn_data = d;
|
d->fp = fp;
|
||||||
|
d->old_pfn_data = c->pfn_data;
|
||||||
|
c->pfn = static_cb;
|
||||||
|
c->pfn_data = d;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) {
|
int mg_tls_init(struct mg_connection *c, struct mg_tls_opts *opts) {
|
||||||
struct mg_tls *tls = (struct mg_tls *) calloc(1, sizeof(*tls));
|
struct mg_tls *tls = (struct mg_tls *) calloc(1, sizeof(*tls));
|
||||||
int rc = 0;
|
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,
|
LOG(LL_DEBUG, ("%lu Setting TLS, CA: %s, cert: %s, key: %s", c->id,
|
||||||
opts->ca == NULL ? "null" : opts->ca,
|
opts->ca == NULL ? "null" : opts->ca,
|
||||||
opts->cert == NULL ? "null" : opts->cert,
|
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";
|
const char *id = "mongoose";
|
||||||
static unsigned char s_initialised = 0;
|
static unsigned char s_initialised = 0;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
if (tls == NULL) {
|
||||||
|
mg_error(c, "TLS OOM");
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
if (!s_initialised) {
|
if (!s_initialised) {
|
||||||
SSL_library_init();
|
SSL_library_init();
|
||||||
s_initialised++;
|
s_initialised++;
|
||||||
|
|||||||
Reference in new issue
Block a user