calloc/realloc checks.
This commit is contained in:
parent
2b96805ecb
commit
e18d335578
12
src/bip.c
12
src/bip.c
@ -147,7 +147,7 @@ void conf_die(bip_t *bip, char *fmt, ...)
|
||||
size = n + 1;
|
||||
else
|
||||
size *= 2;
|
||||
error = realloc(error, size);
|
||||
error = bip_realloc(error, size);
|
||||
}
|
||||
va_start(ap, fmt);
|
||||
_mylog(LOG_ERROR, fmt, ap);
|
||||
@ -341,7 +341,7 @@ static int add_network(bip_t *bip, list_t *data)
|
||||
n->serverv = NULL;
|
||||
n->serverc = 0;
|
||||
} else {
|
||||
n = calloc(sizeof(struct network), 1);
|
||||
n = bip_calloc(sizeof(struct network), 1);
|
||||
hash_insert(&bip->networks, name, n);
|
||||
}
|
||||
|
||||
@ -356,7 +356,7 @@ static int add_network(bip_t *bip, list_t *data)
|
||||
break;
|
||||
#endif
|
||||
case LEX_SERVER:
|
||||
n->serverv = realloc(n->serverv, (n->serverc + 1)
|
||||
n->serverv = bip_realloc(n->serverv, (n->serverc + 1)
|
||||
* sizeof(struct server));
|
||||
n->serverc++;
|
||||
memset(&n->serverv[n->serverc - 1], 0,
|
||||
@ -667,7 +667,7 @@ static int add_user(bip_t *bip, list_t *data, struct historical_directives *hds)
|
||||
}
|
||||
u = hash_get(&bip->users, name);
|
||||
if (!u) {
|
||||
u = calloc(sizeof(struct user), 1);
|
||||
u = bip_calloc(sizeof(struct user), 1);
|
||||
hash_insert(&bip->users, name, u);
|
||||
hash_init(&u->connections, HASH_NOCASE);
|
||||
u->admin = 0;
|
||||
@ -2073,7 +2073,7 @@ int adm_bip(bip_t *bip, struct link_client *ic, struct line *line,
|
||||
ptr++;
|
||||
continue;
|
||||
}
|
||||
line->elemv = realloc(line->elemv,
|
||||
line->elemv = bip_realloc(line->elemv,
|
||||
(line->elemc + 1) * sizeof(char *));
|
||||
line->elemv[line->elemc] = bip_malloc(slen + 1);
|
||||
memcpy(line->elemv[line->elemc], ptr, slen);
|
||||
@ -2084,7 +2084,7 @@ int adm_bip(bip_t *bip, struct link_client *ic, struct line *line,
|
||||
eptr = ptr + strlen(ptr);
|
||||
slen = eptr - ptr;
|
||||
if (slen != 0) {
|
||||
line->elemv = realloc(line->elemv,
|
||||
line->elemv = bip_realloc(line->elemv,
|
||||
(line->elemc + 1) * sizeof(char *));
|
||||
slen = eptr - ptr;
|
||||
line->elemv[line->elemc] = bip_malloc(slen + 1);
|
||||
|
@ -997,7 +997,7 @@ static connection_t *connection_init(int anti_flood, int ssl, int timeout,
|
||||
char *incoming;
|
||||
list_t *outgoing;
|
||||
|
||||
conn = (connection_t *)calloc(sizeof(connection_t), 1);
|
||||
conn = (connection_t *)bip_calloc(sizeof(connection_t), 1);
|
||||
incoming = (char *)bip_malloc(CONN_BUFFER_SIZE);
|
||||
outgoing = list_new(NULL);
|
||||
|
||||
|
39
src/irc.c
39
src/irc.c
@ -75,9 +75,7 @@ int irc_cli_bip(bip_t *bip, struct link_client *ic, struct line *line);
|
||||
struct channel *channel_new(const char *name)
|
||||
{
|
||||
struct channel *chan;
|
||||
chan = calloc(sizeof(struct channel), 1);
|
||||
if (!chan)
|
||||
fatal("calloc");
|
||||
chan = bip_calloc(sizeof(struct channel), 1);
|
||||
chan->name = strdup(name);
|
||||
hash_init(&chan->nicks, HASH_NOCASE);
|
||||
return chan;
|
||||
@ -351,10 +349,6 @@ void rotate_who_client(struct link *link)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* parses:join part mode kick kill privmsg quit nick names
|
||||
* returns: -1 invalid protocol
|
||||
*/
|
||||
int irc_dispatch_server(bip_t *bip, struct link_server *server,
|
||||
struct line *line)
|
||||
{
|
||||
@ -584,10 +578,8 @@ static void bind_to_link(struct link *l, struct link_client *ic)
|
||||
|
||||
LINK(ic) = l;
|
||||
l->l_clientc++;
|
||||
l->l_clientv = realloc(l->l_clientv, l->l_clientc *
|
||||
l->l_clientv = bip_realloc(l->l_clientv, l->l_clientc *
|
||||
sizeof(struct link_client *));
|
||||
if (!l->l_clientv)
|
||||
fatal("realloc");
|
||||
l->l_clientv[i] = ic;
|
||||
}
|
||||
|
||||
@ -612,14 +604,12 @@ void unbind_from_link(struct link_client *ic)
|
||||
l->l_clientv[i - 1] = l->l_clientv[i];
|
||||
|
||||
l->l_clientc--;
|
||||
l->l_clientv = realloc(l->l_clientv, l->l_clientc *
|
||||
l->l_clientv = bip_realloc(l->l_clientv, l->l_clientc *
|
||||
sizeof(struct link_client *));
|
||||
if (l->l_clientc == 0) { /* realloc was equiv to free() */
|
||||
if (l->l_clientc == 0) { /* bip_realloc was equiv to free() */
|
||||
l->l_clientv = NULL;
|
||||
return;
|
||||
}
|
||||
if (!l->l_clientv)
|
||||
fatal("realloc");
|
||||
}
|
||||
|
||||
int irc_cli_bip(bip_t *bip, struct link_client *ic, struct line *line)
|
||||
@ -1272,9 +1262,7 @@ static int irc_join(struct link_server *server, struct line *line)
|
||||
return ERR_PROTOCOL;
|
||||
s_nick = nick_from_ircmask(line->origin);
|
||||
|
||||
nick = calloc(sizeof(struct nick), 1);
|
||||
if (!nick)
|
||||
fatal("calloc");
|
||||
nick = bip_calloc(sizeof(struct nick), 1);
|
||||
nick->name = s_nick; /* not freeing s_nick */
|
||||
hash_insert(&channel->nicks, s_nick, nick);
|
||||
return OK_COPY;
|
||||
@ -1529,7 +1517,7 @@ static void mode_add_letter_uniq(struct link_server *s, char c)
|
||||
if (s->user_mode[i] == c)
|
||||
return;
|
||||
}
|
||||
s->user_mode = realloc(s->user_mode, s->user_mode_len + 1);
|
||||
s->user_mode = bip_realloc(s->user_mode, s->user_mode_len + 1);
|
||||
s->user_mode[s->user_mode_len++] = c;
|
||||
}
|
||||
|
||||
@ -1541,7 +1529,8 @@ static void mode_remove_letter(struct link_server *s, char c)
|
||||
for (; i < s->user_mode_len - 1; i++)
|
||||
s->user_mode[i] = s->user_mode[i + 1];
|
||||
s->user_mode_len--;
|
||||
s->user_mode = realloc(s->user_mode, s->user_mode_len);
|
||||
s->user_mode = bip_realloc(s->user_mode,
|
||||
s->user_mode_len);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -1935,7 +1924,7 @@ static struct link_client *irc_accept_new(connection_t *conn)
|
||||
if (!newconn)
|
||||
return NULL;
|
||||
|
||||
ircc = calloc(sizeof(struct link_client), 1);
|
||||
ircc = bip_calloc(sizeof(struct link_client), 1);
|
||||
CONN(ircc) = newconn;
|
||||
TYPE(ircc) = IRC_TYPE_LOGING_CLIENT;
|
||||
CONN(ircc)->user_data = ircc;
|
||||
@ -2037,7 +2026,7 @@ struct link_client *irc_client_new(void)
|
||||
{
|
||||
struct link_client *c;
|
||||
|
||||
c = calloc(sizeof(struct link_client), 1);
|
||||
c = bip_calloc(sizeof(struct link_client), 1);
|
||||
list_init(&c->who_queue, list_ptr_cmp);
|
||||
|
||||
return c;
|
||||
@ -2047,9 +2036,7 @@ struct link_server *irc_server_new(struct link *link, connection_t *conn)
|
||||
{
|
||||
struct link_server *s;
|
||||
|
||||
s = calloc(sizeof(struct link_server), 1);
|
||||
if (!s)
|
||||
fatal("calloc");
|
||||
s = bip_calloc(sizeof(struct link_server), 1);
|
||||
|
||||
TYPE(s) = IRC_TYPE_SERVER;
|
||||
hash_init(&s->channels, HASH_NOCASE);
|
||||
@ -2499,9 +2486,7 @@ void irc_client_free(struct link_client *cli)
|
||||
struct link *irc_link_new()
|
||||
{
|
||||
struct link *link;
|
||||
link = calloc(sizeof(struct link), 1);
|
||||
if (!link)
|
||||
fatal("calloc");
|
||||
link = bip_calloc(sizeof(struct link), 1);
|
||||
|
||||
link->l_server = NULL;
|
||||
hash_init(&link->chan_infos, HASH_NOCASE);
|
||||
|
@ -34,7 +34,7 @@ struct server {
|
||||
unsigned short port;
|
||||
};
|
||||
|
||||
#define server_new() calloc(sizeof(struct server), 1)
|
||||
#define server_new() bip_calloc(sizeof(struct server), 1)
|
||||
|
||||
#define NICKOP 1
|
||||
#define NICKHALFOP (1<<1)
|
||||
@ -216,7 +216,7 @@ struct chan_info {
|
||||
int backlog;
|
||||
};
|
||||
|
||||
#define chan_info_new() calloc(sizeof(struct chan_info), 1)
|
||||
#define chan_info_new() bip_calloc(sizeof(struct chan_info), 1)
|
||||
|
||||
struct link_server {
|
||||
struct link_connection _link_c;
|
||||
|
12
src/line.c
12
src/line.c
@ -61,9 +61,7 @@ struct line *irc_line_dup(struct line *line)
|
||||
void _irc_line_append(struct line *l, char *s)
|
||||
{
|
||||
l->elemc++;
|
||||
l->elemv = realloc(l->elemv, l->elemc * sizeof(char *));
|
||||
if (!l)
|
||||
fatal("realloc");
|
||||
l->elemv = bip_realloc(l->elemv, l->elemc * sizeof(char *));
|
||||
l->elemv[l->elemc - 1] = s;
|
||||
}
|
||||
|
||||
@ -114,9 +112,7 @@ struct line *irc_line(char *str)
|
||||
size_t len;
|
||||
int curelem = 0;
|
||||
|
||||
line = calloc(sizeof(struct line), 1);
|
||||
if (!line)
|
||||
fatal("calloc");
|
||||
line = bip_calloc(sizeof(struct line), 1);
|
||||
if (str[0] == ':') {
|
||||
space = str + 1;
|
||||
|
||||
@ -138,10 +134,8 @@ struct line *irc_line(char *str)
|
||||
char *tmp;
|
||||
|
||||
line->elemc++;
|
||||
line->elemv = realloc(line->elemv,
|
||||
line->elemv = bip_realloc(line->elemv,
|
||||
line->elemc * sizeof(char *));
|
||||
if (!line->elemv)
|
||||
fatal("realloc");
|
||||
|
||||
space = str;
|
||||
if (*space == ':') {
|
||||
|
@ -247,9 +247,7 @@ static int log_add_file(log_t *logdata, char *destination, char *filename)
|
||||
lfg = hash_get(&logdata->logfgs, destination);
|
||||
|
||||
if (!lfg) {
|
||||
lfg = calloc(sizeof(logfilegroup_t), 1);
|
||||
if (!lfg)
|
||||
fatal("out of memory");
|
||||
lfg = bip_calloc(sizeof(logfilegroup_t), 1);
|
||||
list_init(&lfg->file_group, NULL);
|
||||
lfg->name = strdup(destination);
|
||||
if (!lfg->name)
|
||||
@ -1174,9 +1172,7 @@ log_t *log_new(struct user *user, char *network)
|
||||
{
|
||||
log_t *logdata;
|
||||
|
||||
logdata = (log_t*)calloc(sizeof(log_t), 1);
|
||||
if (!logdata)
|
||||
fatal("out of memory");
|
||||
logdata = (log_t *)bip_calloc(sizeof(log_t), 1);
|
||||
logdata->user = user;
|
||||
logdata->network = strdup(network);
|
||||
hash_init(&logdata->logfgs, HASH_NOCASE);
|
||||
|
23
src/md5.c
23
src/md5.c
@ -348,29 +348,6 @@ int main( int argc, char *argv[] )
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
/*
|
||||
unsigned char *md5dup(unsigned char *data, size_t len)
|
||||
{
|
||||
md5_context ctx;
|
||||
unsigned char *md5 = malloc(16);
|
||||
md5_starts(&ctx);
|
||||
md5_update(&ctx, data, len);
|
||||
md5_finish(&ctx, md5);
|
||||
return md5;
|
||||
}
|
||||
|
||||
unsigned char *strmd5(char *str)
|
||||
{
|
||||
size_t length;
|
||||
if (!str)
|
||||
return NULL;
|
||||
length = strlen(str);
|
||||
if (length == 0)
|
||||
return NULL;
|
||||
return md5dup((unsigned char*)str, length);
|
||||
}
|
||||
*/
|
||||
|
||||
unsigned char *chash_double(char *str, unsigned int seed)
|
||||
{
|
||||
size_t length;
|
||||
|
20
src/util.c
20
src/util.c
@ -39,6 +39,26 @@ void *bip_malloc(size_t size)
|
||||
return r;
|
||||
}
|
||||
|
||||
void *bip_calloc(size_t nmemb, size_t size)
|
||||
{
|
||||
void *r = calloc(nmemb, size);
|
||||
if (!r) {
|
||||
fprintf(conf_global_log_file, 1, strlen("calloc"), "calloc");
|
||||
exit(28);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
void *bip_realloc(void *ptr, size_t size)
|
||||
{
|
||||
void *r = realloc(ptr, size);
|
||||
if (size > 0 && ptr == NULL) {
|
||||
fprintf(conf_global_log_file, 1, strlen("realloc"), "realloc");
|
||||
exit(28);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
/*
|
||||
* <nick> ::= <letter> { <letter> | <number> | <special> }
|
||||
* <special> ::= '-' | '[' | ']' | '\' | '`' | '^' | '{' | '}'
|
||||
|
@ -124,5 +124,7 @@ char *checkmode2text(int v);
|
||||
#endif
|
||||
#define bool2text(v) ((v) ? "true" : "false")
|
||||
void *bip_malloc(size_t size);
|
||||
void *bip_calloc(size_t nmemb, size_t size);
|
||||
void *bip_realloc(void *ptr, size_t size);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user