Browse Source

add force_assert() to enforce assertions as simple assert()s are disabled by -DNDEBUG (fixes #2546)

From: Stefan Bühler <stbuehler@web.de>

git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2948 152afb58-edef-0310-8abb-c4023f1b3aa9
svn/tags/lighttpd-1.4.35
Stefan Bühler 8 years ago
parent
commit
07dd0bd0a5
  1. 1
      NEWS
  2. 14
      src/array.c
  3. 4
      src/bitset.c
  4. 23
      src/buffer.c
  5. 6
      src/buffer.h
  6. 14
      src/configfile.c
  7. 12
      src/configparser.y
  8. 2
      src/connections.c
  9. 2
      src/data_string.c
  10. 2
      src/fdevent.c
  11. 4
      src/fdevent_libev.c
  12. 2
      src/fdevent_select.c
  13. 2
      src/log.h
  14. 6
      src/mod_cgi.c
  15. 4
      src/mod_cml_lua.c
  16. 2
      src/mod_compress.c
  17. 8
      src/mod_dirlisting.c
  18. 4
      src/mod_extforward.c
  19. 24
      src/mod_fastcgi.c
  20. 18
      src/mod_magnet.c
  21. 4
      src/mod_magnet_cache.c
  22. 4
      src/mod_proxy.c
  23. 2
      src/mod_rrdtool.c
  24. 12
      src/mod_scgi.c
  25. 2
      src/mod_simple_vhost.c
  26. 4
      src/mod_webdav.c
  27. 2
      src/network_openssl.c
  28. 2
      src/network_writev.c
  29. 8
      src/server.c
  30. 6
      src/settings.h
  31. 26
      src/stat_cache.c

1
NEWS

@ -14,6 +14,7 @@ NEWS
* remove logical dead code
* [buffer] fix length check in buffer_is_equal_right_len
* fix resource leaks in error cases on config parsing and other initializations
* add force_assert() to enforce assertions as simple assert()s are disabled by -DNDEBUG (fixes #2546)
- 1.4.34
* [mod_auth] explicitly link ssl for SHA1 (fixes #2517)

14
src/array.c

@ -13,7 +13,7 @@ array *array_init(void) {
array *a;
a = calloc(1, sizeof(*a));
assert(a);
force_assert(a);
a->next_power_of_2 = 1;
@ -74,7 +74,7 @@ void array_reset(array *a) {
data_unset *array_pop(array *a) {
data_unset *du;
assert(a->used != 0);
force_assert(a->used != 0);
a->used --;
du = a->data[a->used];
@ -170,7 +170,7 @@ void array_set_key_value(array *hdrs, const char *key, size_t key_len, const cha
data_unset *array_replace(array *a, data_unset *du) {
int ndx;
assert(NULL != du);
force_assert(NULL != du);
if (-1 == (ndx = array_get_index(a, du->key->ptr, du->key->used, NULL))) {
array_insert_unique(a, du);
return NULL;
@ -214,15 +214,15 @@ int array_insert_unique(array *a, data_unset *str) {
a->size = 16;
a->data = malloc(sizeof(*a->data) * a->size);
a->sorted = malloc(sizeof(*a->sorted) * a->size);
assert(a->data);
assert(a->sorted);
force_assert(a->data);
force_assert(a->sorted);
for (j = a->used; j < a->size; j++) a->data[j] = NULL;
} else if (a->size == a->used) {
a->size += 16;
a->data = realloc(a->data, sizeof(*a->data) * a->size);
a->sorted = realloc(a->sorted, sizeof(*a->sorted) * a->size);
assert(a->data);
assert(a->sorted);
force_assert(a->data);
force_assert(a->sorted);
for (j = a->used; j < a->size; j++) a->data[j] = NULL;
}

4
src/bitset.c

@ -23,12 +23,12 @@ bitset *bitset_init(size_t nbits) {
bitset *set;
set = malloc(sizeof(*set));
assert(set);
force_assert(set);
set->bits = calloc(BITSET_USED(nbits), sizeof(*set->bits));
set->nbits = nbits;
assert(set->bits);
force_assert(set->bits);
return set;
}

23
src/buffer.c

@ -25,7 +25,7 @@ buffer* buffer_init(void) {
buffer *b;
b = malloc(sizeof(*b));
assert(b);
force_assert(b);
b->ptr = NULL;
b->size = 0;
@ -90,7 +90,7 @@ int buffer_prepare_copy(buffer *b, size_t size) {
b->size += BUFFER_PIECE_SIZE - (b->size % BUFFER_PIECE_SIZE);
b->ptr = malloc(b->size);
assert(b->ptr);
force_assert(b->ptr);
}
b->used = 0;
return 0;
@ -114,7 +114,7 @@ int buffer_prepare_append(buffer *b, size_t size) {
b->ptr = malloc(b->size);
b->used = 0;
assert(b->ptr);
force_assert(b->ptr);
} else if (b->used + size > b->size) {
b->size += size;
@ -122,7 +122,7 @@ int buffer_prepare_append(buffer *b, size_t size) {
b->size += BUFFER_PIECE_SIZE - (b->size % BUFFER_PIECE_SIZE);
b->ptr = realloc(b->ptr, b->size);
assert(b->ptr);
force_assert(b->ptr);
}
return 0;
}
@ -419,7 +419,7 @@ buffer_array* buffer_array_init(void) {
b = malloc(sizeof(*b));
assert(b);
force_assert(b);
b->ptr = NULL;
b->size = 0;
b->used = 0;
@ -463,14 +463,14 @@ buffer *buffer_array_append_get_buffer(buffer_array *b) {
if (b->size == 0) {
b->size = 16;
b->ptr = malloc(sizeof(*b->ptr) * b->size);
assert(b->ptr);
force_assert(b->ptr);
for (i = 0; i < b->size; i++) {
b->ptr[i] = NULL;
}
} else if (b->size == b->used) {
b->size += 16;
b->ptr = realloc(b->ptr, sizeof(*b->ptr) * b->size);
assert(b->ptr);
force_assert(b->ptr);
for (i = b->used; i < b->size; i++) {
b->ptr[i] = NULL;
}
@ -783,7 +783,7 @@ int buffer_append_string_encoded(buffer *b, const char *s, size_t s_len, buffer_
break;
}
assert(map != NULL);
force_assert(map != NULL);
/* count to-be-encoded-characters */
for (ds = (unsigned char *)s, d_len = 0, ndx = 0; ndx < s_len; ds++, ndx++) {
@ -1058,3 +1058,10 @@ int buffer_to_upper(buffer *b) {
return 0;
}
void log_failed_assert(const char *filename, unsigned int line, const char *msg) {
/* can't use buffer here; could lead to recursive assertions */
fprintf(stderr, "%s.%d: %s\n", filename, line, msg);
fflush(stderr);
abort();
}

6
src/buffer.h

@ -9,7 +9,6 @@
#include <stdlib.h>
#include <sys/types.h>
#include <stdio.h>
typedef struct {
char *ptr;
@ -127,7 +126,10 @@ int light_isalnum(int c);
#define CONST_BUF_LEN(x) x->ptr, x->used ? x->used - 1 : 0
#define SEGFAULT() do { fprintf(stderr, "%s.%d: aborted\n", __FILE__, __LINE__); abort(); } while(0)
#define UNUSED(x) ( (void)(x) )
void log_failed_assert(const char *filename, unsigned int line, const char *msg) LI_NORETURN;
#define force_assert(x) do { if (!(x)) log_failed_assert(__FILE__, __LINE__, "assertion failed: " #x); } while(0)
#define SEGFAULT() log_failed_assert(__FILE__, __LINE__, "aborted");
#endif

14
src/configfile.c

@ -155,13 +155,13 @@ static int config_insert(server *srv) {
srv->config_storage = calloc(1, srv->config_context->used * sizeof(specific_config *));
assert(srv->config_storage);
force_assert(srv->config_storage);
for (i = 0; i < srv->config_context->used; i++) {
specific_config *s;
s = calloc(1, sizeof(specific_config));
assert(s);
force_assert(s);
s->document_root = buffer_init();
s->mimetypes = array_init();
s->server_name = buffer_init();
@ -549,7 +549,7 @@ static int tokenizer_close(server *srv, tokenizer_t *t) {
#endif
static int config_skip_newline(tokenizer_t *t) {
int skipped = 1;
assert(t->input[t->offset] == '\r' || t->input[t->offset] == '\n');
force_assert(t->input[t->offset] == '\r' || t->input[t->offset] == '\n');
if (t->input[t->offset] == '\r' && t->input[t->offset + 1] == '\n') {
skipped ++;
t->offset ++;
@ -560,7 +560,7 @@ static int config_skip_newline(tokenizer_t *t) {
static int config_skip_comment(tokenizer_t *t) {
int i;
assert(t->input[t->offset] == '#');
force_assert(t->input[t->offset] == '#');
for (i = 1; t->input[t->offset + i] &&
(t->input[t->offset + i] != '\n' && t->input[t->offset + i] != '\r');
i++);
@ -1115,7 +1115,7 @@ int config_read(server *srv, const char *fn) {
dc = data_config_init();
buffer_copy_string_len(dc->key, CONST_STR_LEN("global"));
assert(context.all_configs->used == 0);
force_assert(context.all_configs->used == 0);
dc->context_ndx = context.all_configs->used;
array_insert_unique(context.all_configs, (data_unset *)dc);
context.current = dc;
@ -1140,7 +1140,7 @@ int config_read(server *srv, const char *fn) {
ret = config_parse_file(srv, &context, fn);
/* remains nothing if parser is ok */
assert(!(0 == ret && context.ok && 0 != context.configs_stack->used));
force_assert(!(0 == ret && context.ok && 0 != context.configs_stack->used));
context_free(&context);
if (0 != ret) {
@ -1172,7 +1172,7 @@ int config_read(server *srv, const char *fn) {
}
prepends = (data_array *)configparser_merge_data((data_unset *)prepends, (data_unset *)modules);
assert(NULL != prepends);
force_assert(NULL != prepends);
buffer_copy_string_buffer(prepends->key, modules->key);
array_replace(srv->config, (data_unset *)prepends);
modules->free((data_unset *)modules);

12
src/configparser.y

@ -14,7 +14,7 @@
static void configparser_push(config_t *ctx, data_config *dc, int isnew) {
if (isnew) {
dc->context_ndx = ctx->all_configs->used;
assert(dc->context_ndx > ctx->current->context_ndx);
force_assert(dc->context_ndx > ctx->current->context_ndx);
array_insert_unique(ctx->all_configs, (data_unset *)dc);
dc->parent = ctx->current;
array_insert_unique(dc->parent->childs, (data_unset *)dc);
@ -96,7 +96,7 @@ data_unset *configparser_merge_data(data_unset *op1, const data_unset *op2) {
}
break;
default:
assert(0);
force_assert(0);
break;
}
}
@ -334,7 +334,7 @@ eols ::= .
globalstart ::= GLOBAL. {
data_config *dc;
dc = (data_config *)array_get_element(ctx->srv->config_context, "global");
assert(dc);
force_assert(dc);
configparser_push(ctx, dc, 0);
}
@ -344,7 +344,7 @@ global(A) ::= globalstart LCURLY metalines RCURLY. {
cur = ctx->current;
configparser_pop(ctx);
assert(cur && ctx->current);
force_assert(cur && ctx->current);
A = cur;
}
@ -372,7 +372,7 @@ condline(A) ::= context LCURLY metalines RCURLY. {
cur = ctx->current;
configparser_pop(ctx);
assert(cur && ctx->current);
force_assert(cur && ctx->current);
A = cur;
}
@ -400,7 +400,7 @@ context ::= DOLLAR SRVVARNAME(B) LBRACKET stringop(C) RBRACKET cond(E) expressio
op = buffer_init_string("=~");
break;
default:
assert(0);
force_assert(0);
return;
}

2
src/connections.c

@ -1034,7 +1034,7 @@ found_header_end:
weWant = con->request.content_length - dst_cq->bytes_in;
assert(c->mem->used);
force_assert(c->mem->used);
weHave = c->mem->used - c->offset - 1;

2
src/data_string.c

@ -96,7 +96,7 @@ data_string *data_string_init(void) {
data_string *ds;
ds = calloc(1, sizeof(*ds));
assert(ds);
force_assert(ds);
ds->key = buffer_init();
ds->value = buffer_init();

2
src/fdevent.c

@ -136,7 +136,7 @@ int fdevent_unregister(fdevents *ev, int fd) {
if (!ev) return 0;
fdn = ev->fdarray[fd];
assert(fdn->events == 0);
force_assert(fdn->events == 0);
fdnode_free(fdn);

4
src/fdevent_libev.c

@ -67,7 +67,7 @@ static int fdevent_libev_event_set(fdevents *ev, int fde_ndx, int fd, int events
if (!watcher) {
fdn->handler_ctx = watcher = calloc(1, sizeof(ev_io));
assert(watcher);
force_assert(watcher);
ev_io_init(watcher, io_watcher_cb, fd, ev_events);
watcher->data = ev;
@ -103,7 +103,7 @@ static int fdevent_libev_poll(fdevents *ev, int timeout_ms) {
ev_init(&timeout_watcher.w, NULL);
ev_set_cb(&timeout_watcher.timer, timeout_watcher_cb);
timeout_watcher.timer.repeat = ((ev_tstamp) timeout_ms)/1000.0;
assert(timeout_watcher.timer.repeat);
force_assert(timeout_watcher.timer.repeat);
ev_timer_again(ev->libev_loop, &timeout_watcher.timer);
ev_loop(ev->libev_loop, EVLOOP_ONESHOT);

2
src/fdevent_select.c

@ -38,7 +38,7 @@ static int fdevent_select_event_set(fdevents *ev, int fde_ndx, int fd, int event
UNUSED(fde_ndx);
/* we should be protected by max-fds, but you never know */
assert(fd < ((int)FD_SETSIZE));
force_assert(fd < ((int)FD_SETSIZE));
if (events & FDEVENT_IN) {
FD_SET(fd, &(ev->select_set_read));

2
src/log.h

@ -8,8 +8,6 @@
*/
int openDevNull(int fd);
#define WP() log_error_write(srv, __FILE__, __LINE__, "");
int open_logfile_or_pipe(server *srv, const char* logfile);
int log_error_open(server *srv);

6
src/mod_cgi.c

@ -85,7 +85,7 @@ typedef struct {
static handler_ctx * cgi_handler_ctx_init(void) {
handler_ctx *hctx = calloc(1, sizeof(*hctx));
assert(hctx);
force_assert(hctx);
hctx->response = buffer_init();
hctx->response_header = buffer_init();
@ -107,7 +107,7 @@ INIT_FUNC(mod_cgi_init) {
p = calloc(1, sizeof(*p));
assert(p);
force_assert(p);
p->tmp_buf = buffer_init();
p->parse_response = buffer_init();
@ -163,7 +163,7 @@ SETDEFAULTS_FUNC(mod_fastcgi_set_defaults) {
plugin_config *s;
s = calloc(1, sizeof(plugin_config));
assert(s);
force_assert(s);
s->cgi = array_init();
s->execute_x_only = 0;

4
src/mod_cml_lua.c

@ -64,7 +64,7 @@ static int lua_to_c_get_string(lua_State *L, const char *varname, buffer *b) {
lua_pop(L, 1);
assert(curelem - 1 == lua_gettop(L));
force_assert(curelem - 1 == lua_gettop(L));
return 0;
}
@ -86,7 +86,7 @@ static int lua_to_c_is_table(lua_State *L, const char *varname) {
lua_settop(L, curelem - 1);
assert(curelem - 1 == lua_gettop(L));
force_assert(curelem - 1 == lua_gettop(L));
return 1;
}

2
src/mod_compress.c

@ -860,7 +860,7 @@ PHYSICALPATH_FUNC(mod_compress_physical) {
compression_type = HTTP_ACCEPT_ENCODING_X_GZIP;
compression_name = dflt_x_gzip;
} else {
assert(matched_encodings & HTTP_ACCEPT_ENCODING_DEFLATE);
force_assert(matched_encodings & HTTP_ACCEPT_ENCODING_DEFLATE);
compression_type = HTTP_ACCEPT_ENCODING_DEFLATE;
compression_name = dflt_deflate;
}

8
src/mod_dirlisting.c

@ -672,7 +672,7 @@ static int http_list_directory(server *srv, connection *con, plugin_data *p, buf
#endif
path = malloc(dir->used + name_max);
assert(path);
force_assert(path);
strcpy(path, dir->ptr);
path_file = path + i;
@ -685,11 +685,11 @@ static int http_list_directory(server *srv, connection *con, plugin_data *p, buf
}
dirs.ent = (dirls_entry_t**) malloc(sizeof(dirls_entry_t*) * DIRLIST_BLOB_SIZE);
assert(dirs.ent);
force_assert(dirs.ent);
dirs.size = DIRLIST_BLOB_SIZE;
dirs.used = 0;
files.ent = (dirls_entry_t**) malloc(sizeof(dirls_entry_t*) * DIRLIST_BLOB_SIZE);
assert(files.ent);
force_assert(files.ent);
files.size = DIRLIST_BLOB_SIZE;
files.used = 0;
@ -766,7 +766,7 @@ static int http_list_directory(server *srv, connection *con, plugin_data *p, buf
if (list->used == list->size) {
list->size += DIRLIST_BLOB_SIZE;
list->ent = (dirls_entry_t**) realloc(list->ent, sizeof(dirls_entry_t*) * list->size);
assert(list->ent);
force_assert(list->ent);
}
tmp = (dirls_entry_t*) malloc(sizeof(dirls_entry_t) + 1 + i);

4
src/mod_extforward.c

@ -336,11 +336,11 @@ static void ipstr_to_sockaddr(server *srv, const char *host, sock_addr *sock) {
} else switch (addrlist->ai_family) {
case AF_INET:
memcpy(&sock->ipv4, addrlist->ai_addr, sizeof(sock->ipv4));
assert(AF_INET == sock->plain.sa_family);
force_assert(AF_INET == sock->plain.sa_family);
break;
case AF_INET6:
memcpy(&sock->ipv6, addrlist->ai_addr, sizeof(sock->ipv6));
assert(AF_INET6 == sock->plain.sa_family);
force_assert(AF_INET6 == sock->plain.sa_family);
break;
default:
log_error_write(srv, __FILE__, __LINE__, "SSS",

24
src/mod_fastcgi.c

@ -487,7 +487,7 @@ static handler_ctx * handler_ctx_init(void) {
handler_ctx * hctx;
hctx = calloc(1, sizeof(*hctx));
assert(hctx);
force_assert(hctx);
hctx->fde_ndx = -1;
@ -634,7 +634,7 @@ static int fastcgi_extension_insert(fcgi_exts *ext, buffer *key, fcgi_extension_
if (i == ext->used) {
/* filextension is new */
fe = calloc(1, sizeof(*fe));
assert(fe);
force_assert(fe);
fe->key = buffer_init();
fe->last_used_ndx = -1;
buffer_copy_string_buffer(fe->key, key);
@ -644,11 +644,11 @@ static int fastcgi_extension_insert(fcgi_exts *ext, buffer *key, fcgi_extension_
if (ext->size == 0) {
ext->size = 8;
ext->exts = malloc(ext->size * sizeof(*(ext->exts)));
assert(ext->exts);
force_assert(ext->exts);
} else if (ext->used == ext->size) {
ext->size += 8;
ext->exts = realloc(ext->exts, ext->size * sizeof(*(ext->exts)));
assert(ext->exts);
force_assert(ext->exts);
}
ext->exts[ext->used++] = fe;
} else {
@ -658,11 +658,11 @@ static int fastcgi_extension_insert(fcgi_exts *ext, buffer *key, fcgi_extension_
if (fe->size == 0) {
fe->size = 4;
fe->hosts = malloc(fe->size * sizeof(*(fe->hosts)));
assert(fe->hosts);
force_assert(fe->hosts);
} else if (fe->size == fe->used) {
fe->size += 4;
fe->hosts = realloc(fe->hosts, fe->size * sizeof(*(fe->hosts)));
assert(fe->hosts);
force_assert(fe->hosts);
}
fe->hosts[fe->used++] = fh;
@ -1631,7 +1631,7 @@ static int fcgi_env_add(buffer *env, const char *key, size_t key_len, const char
}
static int fcgi_header(FCGI_Header * header, unsigned char type, size_t request_id, int contentLength, unsigned char paddingLength) {
assert(contentLength <= FCGI_MAX_LENGTH);
force_assert(contentLength <= FCGI_MAX_LENGTH);
header->version = FCGI_VERSION_1;
header->type = type;
@ -2094,7 +2094,7 @@ static int fcgi_create_env(server *srv, handler_ctx *hctx, size_t request_id) {
req_c->file.name);
}
assert(weHave != 0);
force_assert(weHave != 0);
chunkqueue_append_file(hctx->wb, req_c->file.name, req_c->offset, weHave);
@ -2124,8 +2124,8 @@ static int fcgi_create_env(server *srv, handler_ctx *hctx, size_t request_id) {
}
c = hctx->wb->last;
assert(c->type == FILE_CHUNK);
assert(req_c->file.is_temp == 1);
force_assert(c->type == FILE_CHUNK);
force_assert(req_c->file.is_temp == 1);
c->file.is_temp = 1;
req_c->file.is_temp = 0;
@ -2541,7 +2541,7 @@ static int fcgi_demux_response(server *srv, handler_ctx *hctx) {
}
/* this should be catched by the b > 0 above */
assert(r);
force_assert(r);
b->used = r + 1; /* one extra for the fake \0 */
b->ptr[b->used - 1] = '\0';
@ -2731,7 +2731,7 @@ static int fcgi_restart_dead_procs(server *srv, plugin_data *p, fcgi_extension_h
case PROC_STATE_KILLED:
case PROC_STATE_UNSET:
/* this should never happen as long as adaptive spawing is disabled */
assert(0);
force_assert(0);
break;
case PROC_STATE_RUNNING:

18
src/mod_magnet.c

@ -696,7 +696,7 @@ static int magnet_copy_response_header(server *srv, connection *con, plugin_data
/* lighty.header */
lua_getfield(L, -1, "lighty"); /* lighty.* from the env */
assert(lua_istable(L, -1));
force_assert(lua_istable(L, -1));
lua_getfield(L, -1, "header"); /* lighty.header */
if (lua_istable(L, -1)) {
@ -740,11 +740,11 @@ static int magnet_attach_content(server *srv, connection *con, plugin_data *p, l
* get the environment of the function
*/
assert(lua_isfunction(L, -1));
force_assert(lua_isfunction(L, -1));
lua_getfenv(L, -1); /* -1 is the function */
lua_getfield(L, -1, "lighty"); /* lighty.* from the env */
assert(lua_istable(L, -1));
force_assert(lua_istable(L, -1));
lua_getfield(L, -1, "content"); /* lighty.content */
if (lua_istable(L, -1)) {
@ -875,7 +875,7 @@ static handler_t magnet_attract(server *srv, connection *con, plugin_data *p, bu
lua_pop(L, 1);
assert(lua_gettop(L) == 0); /* only the function should be on the stack */
force_assert(lua_gettop(L) == 0); /* only the function should be on the stack */
con->http_status = 500;
con->mode = DIRECT;
@ -997,7 +997,7 @@ static handler_t magnet_attract(server *srv, connection *con, plugin_data *p, bu
lua_tostring(L, -1));
lua_pop(L, 1); /* remove the error-msg and the function copy from the stack */
assert(lua_gettop(L) == 1); /* only the function should be on the stack */
force_assert(lua_gettop(L) == 1); /* only the function should be on the stack */
con->http_status = 500;
con->mode = DIRECT;
@ -1007,7 +1007,7 @@ static handler_t magnet_attract(server *srv, connection *con, plugin_data *p, bu
lua_remove(L, errfunc);
/* we should have the function-copy and the return value on the stack */
assert(lua_gettop(L) == 2);
force_assert(lua_gettop(L) == 2);
if (lua_isnumber(L, -1)) {
/* if the ret-value is a number, take it */
@ -1033,16 +1033,16 @@ static handler_t magnet_attract(server *srv, connection *con, plugin_data *p, bu
con->mode = DIRECT;
}
assert(lua_gettop(L) == 1); /* only the function should be on the stack */
force_assert(lua_gettop(L) == 1); /* only the function should be on the stack */
/* we are finished */
return HANDLER_FINISHED;
} else if (MAGNET_RESTART_REQUEST == lua_return_value) {
assert(lua_gettop(L) == 1); /* only the function should be on the stack */
force_assert(lua_gettop(L) == 1); /* only the function should be on the stack */
return HANDLER_COMEBACK;
} else {
assert(lua_gettop(L) == 1); /* only the function should be on the stack */
force_assert(lua_gettop(L) == 1); /* only the function should be on the stack */
return HANDLER_GO_ON;
}

4
src/mod_magnet_cache.c

@ -80,7 +80,7 @@ lua_State *script_cache_get_script(server *srv, connection *con, script_cache *c
break;
}
assert(lua_isfunction(sc->L, -1));
force_assert(lua_isfunction(sc->L, -1));
lua_pushvalue(sc->L, -1); /* copy the function-reference */
return sc->L;
@ -128,7 +128,7 @@ lua_State *script_cache_get_script(server *srv, connection *con, script_cache *c
* as pcall() will pop the script from the stack when done, we have to
* duplicate it here
*/
assert(lua_isfunction(sc->L, -1));
force_assert(lua_isfunction(sc->L, -1));
lua_pushvalue(sc->L, -1); /* copy the function-reference */
return sc->L;

4
src/mod_proxy.c

@ -686,7 +686,7 @@ static int proxy_demux_response(server *srv, handler_ctx *hctx) {
}
/* this should be catched by the b > 0 above */
assert(r);
force_assert(r);
hctx->response->used += r;
hctx->response->ptr[hctx->response->used - 1] = '\0';
@ -1258,7 +1258,7 @@ static handler_t mod_proxy_check_extension(server *srv, connection *con, void *p
}
/* just to be sure */
assert(extension->value->used < INT_MAX);
force_assert(extension->value->used < INT_MAX);
host = (data_proxy *)extension->value->data[0];

2
src/mod_rrdtool.c

@ -346,7 +346,7 @@ SETDEFAULTS_FUNC(mod_rrd_set_defaults) {
if (!p) return HANDLER_ERROR;
assert(srv->config_context->used > 0);
force_assert(srv->config_context->used > 0);
p->config_storage = calloc(1, srv->config_context->used * sizeof(plugin_config *));
for (i = 0; i < srv->config_context->used; i++) {

12
src/mod_scgi.c

@ -351,7 +351,7 @@ static handler_ctx * handler_ctx_init(void) {
handler_ctx * hctx;
hctx = calloc(1, sizeof(*hctx));
assert(hctx);
force_assert(hctx);
hctx->fde_ndx = -1;
@ -495,7 +495,7 @@ static int scgi_extension_insert(scgi_exts *ext, buffer *key, scgi_extension_hos
if (i == ext->used) {
/* filextension is new */
fe = calloc(1, sizeof(*fe));
assert(fe);
force_assert(fe);
fe->key = buffer_init();
buffer_copy_string_buffer(fe->key, key);
@ -504,11 +504,11 @@ static int scgi_extension_insert(scgi_exts *ext, buffer *key, scgi_extension_hos
if (ext->size == 0) {
ext->size = 8;
ext->exts = malloc(ext->size * sizeof(*(ext->exts)));
assert(ext->exts);
force_assert(ext->exts);
} else if (ext->used == ext->size) {
ext->size += 8;
ext->exts = realloc(ext->exts, ext->size * sizeof(*(ext->exts)));
assert(ext->exts);
force_assert(ext->exts);
}
ext->exts[ext->used++] = fe;
} else {
@ -518,11 +518,11 @@ static int scgi_extension_insert(scgi_exts *ext, buffer *key, scgi_extension_hos
if (fe->size == 0) {
fe->size = 4;
fe->hosts = malloc(fe->size * sizeof(*(fe->hosts)));
assert(fe->hosts);
force_assert(fe->hosts);
} else if (fe->size == fe->used) {
fe->size += 4;
fe->hosts = realloc(fe->hosts, fe->size * sizeof(*(fe->hosts)));
assert(fe->hosts);
force_assert(fe->hosts);
}
fe->hosts[fe->used++] = fh;

2
src/mod_simple_vhost.c

@ -124,7 +124,7 @@ SETDEFAULTS_FUNC(mod_simple_vhost_set_defaults) {
static int build_doc_root(server *srv, connection *con, plugin_data *p, buffer *out, buffer *host) {
stat_cache_entry *sce = NULL;
assert(p->conf.server_root->used > 1);
force_assert(p->conf.server_root->used > 1);
buffer_prepare_copy(out, 128);
buffer_copy_string_buffer(out, p->conf.server_root);

4
src/mod_webdav.c

@ -1258,7 +1258,7 @@ URIHANDLER_FUNC(mod_webdav_subrequest_handler) {
if (1 == webdav_parse_chunkqueue(srv, con, p, con->request_content_queue, &xml)) {
xmlNode *rootnode = xmlDocGetRootElement(xml);
assert(rootnode);
force_assert(rootnode);
if (0 == xmlStrcmp(rootnode->name, BAD_CAST "propfind")) {
xmlNode *cmd;
@ -2235,7 +2235,7 @@ propmatch_cleanup:
if (1 == webdav_parse_chunkqueue(srv, con, p, con->request_content_queue, &xml)) {
xmlNode *rootnode = xmlDocGetRootElement(xml);
assert(rootnode);
force_assert(rootnode);
if (0 == xmlStrcmp(rootnode->name, BAD_CAST "lockinfo")) {
xmlNode *lockinfo;

2
src/network_openssl.c

@ -170,7 +170,7 @@ int network_write_chunkqueue_openssl(server *srv, connection *con, SSL *ssl, chu
if (NULL == local_send_buffer) {
local_send_buffer = malloc(LOCAL_SEND_BUFSIZE);
assert(local_send_buffer);
force_assert(local_send_buffer);
}
do {

2
src/network_writev.c

@ -273,7 +273,7 @@ int network_write_chunkqueue_writev(server *srv, connection *con, int fd, chunkq
c->file.mmap.length,
abs_offset,
c->file.mmap.offset);
assert(toSend < 0);
force_assert(toSend < 0);
}
if (toSend > max_bytes) toSend = max_bytes;

8
src/server.c

@ -172,7 +172,7 @@ static server *server_init(void) {
FILE *frandom = NULL;
server *srv = calloc(1, sizeof(*srv));
assert(srv);
force_assert(srv);
#define CLEAN(x) \
srv->x = buffer_init();
@ -230,13 +230,13 @@ static server *server_init(void) {
srv->startup_ts = srv->cur_ts;
srv->conns = calloc(1, sizeof(*srv->conns));
assert(srv->conns);
force_assert(srv->conns);
srv->joblist = calloc(1, sizeof(*srv->joblist));
assert(srv->joblist);
force_assert(srv->joblist);
srv->fdwaitqueue = calloc(1, sizeof(*srv->fdwaitqueue));
assert(srv->fdwaitqueue);
force_assert(srv->fdwaitqueue);
srv->srvconf.modules = array_init();
srv->srvconf.modules_dir = buffer_init_string(LIBRARY_DIR);

6
src/settings.h

@ -9,6 +9,12 @@
# define __USE_GNU /* a hack in my eyes, <fcntl.h> F_SETSIG should work with _GNU_SOURCE */
#endif
#ifdef __GNUC__
# define LI_NORETURN __attribute__((noreturn))
#else
# define LI_NORETURN
#endif
#define BV(x) (1 << x)
#define INET_NTOP_CACHE_MAX 4

26
src/stat_cache.c

@ -177,7 +177,7 @@ void stat_cache_free(stat_cache *sc) {
stat_cache_entry_free(node->data);
sc->files = splaytree_delete(sc->files, node->key);
assert(osize - 1 == splaytree_size(sc->files));
force_assert(osize - 1 == splaytree_size(sc->files));
}
buffer_free(sc->dir_name);
@ -194,9 +194,9 @@ void stat_cache_free(stat_cache *sc) {
sc->dirs = splaytree_delete(sc->dirs, node->key);
if (osize == 1) {
assert(NULL == sc->dirs);
force_assert(NULL == sc->dirs);
} else {
assert(osize == (sc->dirs->size + 1));
force_assert(osize == (sc->dirs->size + 1));
}
}
@ -290,7 +290,7 @@ handler_t stat_cache_handle_fdevent(server *srv, void *_fce, int revent) {
fam_dir_entry_free(&sc->fam, node->data);
sc->dirs = splaytree_delete(sc->dirs, ndx);
assert(osize - 1 == splaytree_size(sc->dirs));
force_assert(osize - 1 == splaytree_size(sc->dirs));
}
}
break;
@ -392,7 +392,7 @@ handler_t stat_cache_get_entry(server *srv, connection *con, buffer *name, stat_
if (sc->files && (sc->files->key == file_ndx)) {
#ifdef DEBUG_STAT_CACHE
/* it was in the cache */
assert(i < ctrl.used);
force_assert(i < ctrl.used);
#endif
/* we have seen this file already and
@ -430,7 +430,7 @@ handler_t stat_cache_get_entry(server *srv, connection *con, buffer *name, stat_
log_error_write(srv, __FILE__, __LINE__, "xSB",
file_ndx, "was already inserted but not found in cache, ", name);
}
assert(i == ctrl.used);
force_assert(i == ctrl.used);
#endif
}
@ -516,9 +516,9 @@ handler_t stat_cache_get_entry(server *srv, connection *con, buffer *name, stat_
ctrl.ptr[ctrl.used++] = file_ndx;
assert(sc->files);
assert(sc->files->data == sce);
assert(osize + 1 == splaytree_size(sc->files));
force_assert(sc->files);
force_assert(sc->files->data == sce);
force_assert(osize + 1 == splaytree_size(sc->files));
#endif
}
@ -650,9 +650,9 @@ handler_t stat_cache_get_entry(server *srv, connection *con, buffer *name, stat_
}
sc->dirs = splaytree_insert(sc->dirs, dir_ndx, fam_dir);
assert(sc->dirs);
assert(sc->dirs->data == fam_dir);
assert(osize == (sc->dirs->size - 1));
force_assert(sc->dirs);
force_assert(sc->dirs->data == fam_dir);
force_assert(osize == (sc->dirs->size - 1));
}
} else {
fam_dir = dir_node->data;
@ -735,7 +735,7 @@ int stat_cache_trigger_cleanup(server *srv) {
}
}
assert(osize - 1 == splaytree_size(sc->files));
force_assert(osize - 1 == splaytree_size(sc->files));
#endif
}
}

Loading…
Cancel
Save