From 8ee1bcf1fac5f05629d4aa5b165e2922bdda6d49 Mon Sep 17 00:00:00 2001 From: shdown Date: Sat, 30 Aug 2014 14:08:13 +0400 Subject: [PATCH] input: handle reaching MP_MAX_FDS correctly Don't dereference fd and increment ictx->num_fds on fail. --- input/input.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/input/input.c b/input/input.c index 908d50d014..db6e26aab5 100644 --- a/input/input.c +++ b/input/input.c @@ -858,17 +858,17 @@ int mp_input_add_fd(struct input_ctx *ictx, int unix_fd, int select, MP_ERR(ictx, "Too many file descriptors.\n"); } else { fd = &ictx->fds[ictx->num_fds]; + *fd = (struct input_fd){ + .log = ictx->log, + .fd = unix_fd, + .select = select, + .read_cmd = read_cmd_func, + .read_key = read_key_func, + .close_func = close_func, + .ctx = ctx, + }; + ictx->num_fds++; } - *fd = (struct input_fd){ - .log = ictx->log, - .fd = unix_fd, - .select = select, - .read_cmd = read_cmd_func, - .read_key = read_key_func, - .close_func = close_func, - .ctx = ctx, - }; - ictx->num_fds++; input_unlock(ictx); return !!fd; }