Add SUDO_EV_MASK to mask off invalid event values.
Now used by sudo_ev_init() to avoid bogus events.
This commit is contained in:
@@ -33,6 +33,9 @@ struct timeval; /* for deprecated APIs */
|
|||||||
#define SUDO_EV_SIGNAL 0x10 /* fire on signal receipt */
|
#define SUDO_EV_SIGNAL 0x10 /* fire on signal receipt */
|
||||||
#define SUDO_EV_SIGINFO 0x20 /* fire on signal receipt (siginfo) */
|
#define SUDO_EV_SIGINFO 0x20 /* fire on signal receipt (siginfo) */
|
||||||
|
|
||||||
|
/* User-settable events for sudo_ev_init() (SUDO_EV_TIMEOUT not valid here) */
|
||||||
|
#define SUDO_EV_MASK (SUDO_EV_READ|SUDO_EV_WRITE|SUDO_EV_PERSIST|SUDO_EV_SIGNAL|SUDO_EV_SIGINFO)
|
||||||
|
|
||||||
/* Event flags (internal) */
|
/* Event flags (internal) */
|
||||||
#define SUDO_EVQ_INSERTED 0x01 /* event is on the event queue */
|
#define SUDO_EVQ_INSERTED 0x01 /* event is on the event queue */
|
||||||
#define SUDO_EVQ_ACTIVE 0x02 /* event is on the active queue */
|
#define SUDO_EVQ_ACTIVE 0x02 /* event is on the active queue */
|
||||||
|
@@ -273,10 +273,9 @@ sudo_ev_init(struct sudo_event *ev, int fd, short events,
|
|||||||
{
|
{
|
||||||
debug_decl(sudo_ev_init, SUDO_DEBUG_EVENT);
|
debug_decl(sudo_ev_init, SUDO_DEBUG_EVENT);
|
||||||
|
|
||||||
/* XXX - sanity check events value */
|
|
||||||
memset(ev, 0, sizeof(*ev));
|
memset(ev, 0, sizeof(*ev));
|
||||||
ev->fd = fd;
|
ev->fd = fd;
|
||||||
ev->events = events;
|
ev->events = events & SUDO_EV_MASK;
|
||||||
ev->pfd_idx = -1;
|
ev->pfd_idx = -1;
|
||||||
ev->callback = callback;
|
ev->callback = callback;
|
||||||
ev->closure = closure;
|
ev->closure = closure;
|
||||||
@@ -842,7 +841,7 @@ sudo_ev_get_timeleft_v2(struct sudo_event *ev, struct timespec *ts)
|
|||||||
int
|
int
|
||||||
sudo_ev_pending_v1(struct sudo_event *ev, short events, struct timespec *ts)
|
sudo_ev_pending_v1(struct sudo_event *ev, short events, struct timespec *ts)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret;
|
||||||
debug_decl(sudo_ev_pending, SUDO_DEBUG_EVENT);
|
debug_decl(sudo_ev_pending, SUDO_DEBUG_EVENT);
|
||||||
|
|
||||||
sudo_debug_printf(SUDO_DEBUG_INFO, "%s: event %p, flags 0x%x, events 0x%x",
|
sudo_debug_printf(SUDO_DEBUG_INFO, "%s: event %p, flags 0x%x, events 0x%x",
|
||||||
|
Reference in New Issue
Block a user