#define POOL_PROXYSCAN 8
#define POOL_LUA 9
#define POOL_TROJANSCAN 10
+#define POOL_NTERFACER 11
#include "../lua/lua.h"
-#include "../nterface/library.h"
-#include "../nterface/nterfacer.h"
+#include "../nterfacer/library.h"
+#include "../nterfacer/nterfacer.h"
MODULE_VERSION("");
struct esocket *esocket_add(int fd, char socket_type, struct esocket_events *events, unsigned short token) {
int flags;
- struct esocket *newsock = (struct esocket *)malloc(sizeof(struct esocket));
+ struct esocket *newsock = (struct esocket *)ntmalloc(sizeof(struct esocket));
if(!newsock)
return NULL;
for(;pkt;) {
npkt = pkt->next;
- free(pkt->line);
- free(pkt);
+ ntfree(pkt->line);
+ ntfree(pkt);
pkt = npkt;
}
if(p->in.data)
- free(p->in.data);
+ ntfree(p->in.data);
if(p->in.cryptobuf)
- free(p->in.cryptobuf);
+ ntfree(p->in.cryptobuf);
- free(p);
+ ntfree(p);
break;
}
}
sock->clientseqno++;
ret = sock->events.on_line(sock, (char *)buf->cryptobuf);
- free(buf->cryptobuf);
+ ntfree(buf->cryptobuf);
buf->cryptobuf = NULL;
buf->cryptobufsize = 0;
buf->mac = 0;
}
}
- p2 = realloc(buf->cryptobuf, buf->cryptobufsize + 16);
+ p2 = ntrealloc(buf->cryptobuf, buf->cryptobufsize + 16);
if(!p2)
- Error("nterface", ERR_STOP, "realloc() failed in crypto_newblock (esockets.c)");
+ Error("nterface", ERR_STOP, "ntrealloc() failed in crypto_newblock (esockets.c)");
buf->cryptobuf = p2;
memcpy(p2 + buf->cryptobufsize, p, 16);
if((bytesread == -1) && (errno == EAGAIN))
return 0;
- p = realloc(buf->data, buf->size + bytesread);
+ p = ntrealloc(buf->data, buf->size + bytesread);
if(!p)
- Error("nterface", ERR_STOP, "realloc() failed in esocket_read (esockets.c)");
+ Error("nterface", ERR_STOP, "ntrealloc() failed in esocket_read (esockets.c)");
buf->data = p;
memcpy(buf->data + buf->size, bufd, bytesread);
if(strip > 0) {
if(buf->size - strip == 0) {
- free(buf->data);
+ ntfree(buf->data);
buf->data = NULL;
} else {
memmove(buf->data, buf->data + strip, buf->size - strip);
- p = realloc(buf->data, buf->size - strip);
+ p = ntrealloc(buf->data, buf->size - strip);
if(!p)
- Error("nterface", ERR_STOP, "realloc() failed in esocket_read (esockets.c)");
+ Error("nterface", ERR_STOP, "ntrealloc() failed in esocket_read (esockets.c)");
buf->data = p;
}
if(buf->count == MAX_OUT_QUEUE_SIZE)
return NULL;
- nw = malloc(sizeof(struct esocket_packet));
+ nw = ntmalloc(sizeof(struct esocket_packet));
if(!nw)
return NULL;
- nw->line = malloc(bytes);
+ nw->line = ntmalloc(bytes);
if(!nw->line) {
- free(nw);
+ ntfree(nw);
return NULL;
}
struct esocket_packet *p = buf->head;
buf->head = buf->head->next;
- free(p->line);
- free(p);
+ ntfree(p->line);
+ ntfree(p);
buf->count--;
if(!buf->head) { /* if we've exhausted the buffer */
}
rijndaelcbc *rijndaelcbc_init(unsigned char *key, int keybits, unsigned char *iv, int decrypt) {
- rijndaelcbc *ret = (rijndaelcbc *)malloc(sizeof(rijndaelcbc) + RKLENGTH(keybits) * sizeof(unsigned long));
+ rijndaelcbc *ret = (rijndaelcbc *)ntmalloc(sizeof(rijndaelcbc) + RKLENGTH(keybits) * sizeof(unsigned long));
if(!ret)
return NULL;
}
void rijndaelcbc_free(rijndaelcbc *c) {
- free(c);
+ ntfree(c);
}
unsigned char *rijndaelcbc_encrypt(rijndaelcbc *c, unsigned char *ptblock) {
#define __nterface_library_H
#include "../core/error.h"
+#include "../core/nsmalloc.h"
#include "../lib/sha2.h"
void rijndaelcbc_free(rijndaelcbc *c);
rijndaelcbc *rijndaelcbc_init(unsigned char *key, int keybits, unsigned char *iv, int decrypt);
+#define ntmalloc(x) nsmalloc(POOL_NTERFACER, x)
+#define ntfree(x) nsfree(POOL_NTERFACER, x)
+#define ntrealloc(x, y) nsrealloc(POOL_NTERFACER, x, y)
+
#endif
if(!us)
return;
- filename = malloc(filenamelen);
+ filename = ntmalloc(filenamelen);
MemCheck(filename);
- filename2 = malloc(filenamelen);
+ filename2 = ntmalloc(filenamelen);
if(!filename2) {
MemError();
- free(filename);
+ ntfree(filename);
return;
}
unlink(filename);
}
- free(filename);
- free(filename2);
+ ntfree(filename);
+ ntfree(filename2);
}
int direxists(char *filename) {
if(lastp) {
int ret = 0;
- char *newp = malloc(lastp - filename + 1);
+ char *newp = ntmalloc(lastp - filename + 1);
if(!newp) {
MemError();
return 0;
ret = mkdir(newp, DIR_PERMISSIONS);
}
- free(newp);
+ ntfree(newp);
if(ret)
return 0;
}
}
struct nterface_auto_log *nterface_open_log(char *name, char *filename, int debug) {
- struct nterface_auto_log *us = malloc(sizeof(struct nterface_auto_log));
+ struct nterface_auto_log *us = ntmalloc(sizeof(struct nterface_auto_log));
MemCheckR(us, NULL);
us->filename = getsstring(filename, strlen(filename));
if(!us->filename) {
MemError();
- free(us);
+ ntfree(us);
}
us->name = getsstring(name, strlen(name));
if(!us->name) {
MemError();
freesstring(us->filename);
- free(us);
+ ntfree(us);
}
if(direxists(filename)) {
nterface_log(ourlog, NL_SYSTEM, "Log closed");
if(ourlog->log)
fclose(ourlog->log);
- free(ourlog);
+ ntfree(ourlog);
}
return NULL;
}
void free_handler(struct handler *hp) {
freesstring(hp->command);
- free(hp);
+ ntfree(hp);
}
void free_handlers(struct service_node *tp) {
lp = tp;
tp = tp->next;
free_handlers(lp);
- free(lp);
+ ntfree(lp);
}
tree = NULL;
freesstring(permits[i].hostname);
freesstring(permits[i].password);
}
- free(permits);
+ ntfree(permits);
permit_count = 0;
permits = NULL;
}
hostnames = (sstring **)hostnamesa->content;
passwords = (sstring **)passwordsa->content;
- new_permits = calloc(hostnamesa->cursi, sizeof(struct permitted));
+ new_permits = ntmalloc(hostnamesa->cursi * sizeof(struct permitted));
+ memset(new_permits, 0, hostnamesa->cursi * sizeof(struct permitted));
item = new_permits;
for(i=0;i<hostnamesa->cursi;i++) {
}
if(!loaded_lines) {
- free(new_permits);
+ ntfree(new_permits);
return 0;
}
- resized = realloc(new_permits, sizeof(struct permitted) * loaded_lines);
+ resized = ntrealloc(new_permits, sizeof(struct permitted) * loaded_lines);
if(!resized) {
MemError();
- free(new_permits);
+ ntfree(new_permits);
return 0;
}
permits = resized;
}
struct service_node *register_service(char *name) {
- struct service_node *np = malloc(sizeof(service_node));
+ struct service_node *np = ntmalloc(sizeof(service_node));
MemCheckR(np, NULL);
np->name = getsstring(name, strlen(name));
if(!np->name) {
MemError();
- free(np);
+ ntfree(np);
return NULL;
}
}
struct handler *register_handler(struct service_node *service, char *command, int args, handler_function fp) {
- struct handler *hp = malloc(sizeof(handler));
+ struct handler *hp = ntmalloc(sizeof(handler));
MemCheckR(hp, NULL);
hp->command = getsstring(command, strlen(command));
if(!hp->command) {
MemError();
- free(hp);
+ ntfree(hp);
return NULL;
}
if(li->service == service) {
if(pi) {
pi->next = li->next;
- free(li);
+ ntfree(li);
li = pi->next;
} else {
rlines = li->next;
- free(li);
+ ntfree(li);
li = rlines;
}
} else {
}
freesstring(service->name);
- free(service);
+ ntfree(service);
}
void nterfacer_accept_event(struct esocket *socket) {
return;
}
- temp = (struct sconnect *)malloc(sizeof(struct sconnect));
+ temp = (struct sconnect *)ntmalloc(sizeof(struct sconnect));
if(!temp) {
MemError();
close(newfd);
newsocket = esocket_add(newfd, ESOCKET_UNIX_DOMAIN_CONNECTED, &nterfacer_events, nterfacer_token);
if(!newsocket) {
- free(temp);
+ ntfree(temp);
close(newfd);
return;
}
return RE_COMMAND_NOT_FOUND;
if(argcount) {
- parsebuf = (char *)malloc(strlen(pp) + 1);
+ parsebuf = (char *)ntmalloc(strlen(pp) + 1);
MemCheckR(parsebuf, RE_MEM_ERROR);
newp = parsebuf;
*newp++ = '\0';
args[argcount++] = newp;
if(argcount > MAX_ARGS) {
- free(parsebuf);
+ ntfree(parsebuf);
return RE_TOO_MANY_ARGS;
}
} else {
}
if(argcount < hl->args) {
if(argcount && parsebuf)
- free(parsebuf);
+ ntfree(parsebuf);
return RE_WRONG_ARG_COUNT;
}
- prequest = (struct rline *)malloc(sizeof(struct rline));
+ prequest = (struct rline *)ntmalloc(sizeof(struct rline));
if(!prequest) {
MemError();
if(argcount && parsebuf)
- free(parsebuf);
+ ntfree(parsebuf);
return RE_MEM_ERROR;
}
re = (hl->function)(prequest, argcount, args);
if(argcount && parsebuf)
- free(parsebuf);
+ ntfree(parsebuf);
return re;
}
if(li->socket->tag == socket)
li->socket = NULL;
- free(socket);
+ ntfree(socket);
}
int ri_append(struct rline *li, char *format, ...) {
} else {
rlines = li->next;
}
- free(li);
+ ntfree(li);
break;
}
}
} else {
rlines = li->next;
}
- free(li);
+ ntfree(li);
break;
}
}
if(strchr(argv[i], '\r'))
return ri_error(ri, RELAY_INVALID_CHARS, "Invalid character in input");
- np = malloc(sizeof(struct rld));
+ np = ntmalloc(sizeof(struct rld));
MemCheckR(np, ri_error(ri, RELAY_MEMORY_ERROR, "Memory error"));
np->rline = ri;
np->termination.pcre.phrase = pcre_compile(argv[1], PCRE_FLAGS, &rerror, &erroroffset, NULL);
if(!np->termination.pcre.phrase) {
MemError();
- free(np);
+ ntfree(np);
return ri_error(ri, RELAY_REGEX_ERROR, "Regex compliation error");
}
np->termination.pcre.hint = pcre_study(np->termination.pcre.phrase, 0, &rerror);
if(rerror) {
pcre_free(np->termination.pcre.phrase);
- free(np);
+ ntfree(np);
return ri_error(ri, RELAY_REGEX_HINT_ERROR, "Regex hint error");
}
if(np->termination.pcre.hint)
pcre_free(np->termination.pcre.hint);
}
- free(np);
+ ntfree(np);
return ri_error(ri, RELAY_NICK_ERROR, "Unable to get a nickname!");
}
pcre_free(np->termination.pcre.hint);
}
deregisterlocaluser(np->nick, NULL);
- free(np);
+ ntfree(np);
return ri_error(ri, RELAY_MEMORY_ERROR, "Memory error");
}
more = NULL;
}
- np = malloc(sizeof(struct rld));
+ np = ntmalloc(sizeof(struct rld));
MemCheckR(np, ri_error(ri, RELAY_MEMORY_ERROR, "Memory error"));
np->rline = ri;
np->dest = NULL;
if(!(np->nick = relay_getnick())) {
- free(np);
+ ntfree(np);
return ri_error(ri, RELAY_NICK_ERROR, "Unable to get a nickname!");
}
if(!np->schedule) {
MemError();
deregisterlocaluser(np->nick, NULL);
- free(np);
+ ntfree(np);
}
np->next = list;
if(item->termination.pcre.hint)
pcre_free(item->termination.pcre.hint);
}
- free(item);
+ ntfree(item);
}
void relay_timeout(void *arg) {