-extern char version[];
-
#include "secnet.h"
#include <stdio.h>
+#include <assert.h>
+#include <limits.h>
#include <string.h>
#include <getopt.h>
#include <errno.h>
static pid_t secnet_pid;
-/* from log.c */
-extern uint32_t message_level;
-extern bool_t secnet_is_daemon;
-extern struct log_if *system_log;
-
-/* from process.c */
-extern void start_signal_handling(void);
-
/* Structures dealing with poll() call */
struct poll_interest {
beforepoll_fn *before;
afterpoll_fn *after;
void *state;
- uint32_t max_nfds;
- uint32_t nfds;
+ int32_t max_nfds;
+ int32_t nfds;
cstring_t desc;
struct poll_interest *next;
};
static struct poll_interest *reg=NULL;
-static uint32_t total_nfds=10;
+static int32_t total_nfds=10;
static bool_t finished=False;
}
void register_for_poll(void *st, beforepoll_fn *before,
- afterpoll_fn *after, uint32_t max_nfds, cstring_t desc)
+ afterpoll_fn *after, int32_t max_nfds, cstring_t desc)
{
struct poll_interest *i;
i->max_nfds=max_nfds;
i->nfds=0;
i->desc=desc;
+ assert(total_nfds < INT_MAX - max_nfds);
total_nfds+=max_nfds;
i->next=reg;
reg=i;
int timeout;
struct pollfd *fds;
- fds=alloca(sizeof(*fds)*total_nfds);
- if (!fds) {
- fatal("run: couldn't alloca");
- }
+ fds=safe_malloc(sizeof(*fds)*total_nfds, "run");
Message(M_NOTICE,"%s [%d]: starting\n",version,secnet_pid);
}
} while (rv<0);
} while (!finished);
+ free(fds);
}
static void droppriv(void)