From ec030afdab836e75c159509784c79d9de6e1cb77 Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Wed, 29 Aug 2012 19:38:19 +0000 Subject: [PATCH] Initialize file descriptors for dummy channels to -1. Dummy channels usually aren't read from, but functions like SHELL and CURL use autoservice on the channel. (closes issue ASTERISK-20283) Reported by: Gareth Palmer Patches: svn-371580.patch (license #5169) patch uploaded by Gareth Palmer (modified) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@371888 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/channel.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/main/channel.c b/main/channel.c index 2a8634bf64..86f9189955 100644 --- a/main/channel.c +++ b/main/channel.c @@ -1387,6 +1387,7 @@ struct ast_channel *ast_dummy_channel_alloc(void) { struct ast_channel *tmp; struct varshead *headp; + int x; #if defined(REF_DEBUG) tmp = __ao2_alloc_debug(sizeof(*tmp), ast_dummy_channel_destructor, "dummy channel", @@ -1406,6 +1407,22 @@ struct ast_channel *ast_dummy_channel_alloc(void) return ast_channel_unref(tmp); } + /* + * Init file descriptors to unopened state just in case + * autoservice is called on the channel or something tries to + * read a frame from it. + */ + tmp->timingfd = -1; + for (x = 0; x < ARRAY_LEN(tmp->alertpipe); ++x) { + tmp->alertpipe[x] = -1; + } + for (x = 0; x < ARRAY_LEN(tmp->fds); ++x) { + tmp->fds[x] = -1; + } +#ifdef HAVE_EPOLL + tmp->epfd = -1; +#endif + headp = &tmp->varshead; AST_LIST_HEAD_INIT_NOLOCK(headp);