From: Richard Mudgett Date: Wed, 29 Aug 2012 19:40:20 +0000 (+0000) Subject: Initialize file descriptors for dummy channels to -1. X-Git-Tag: 10.9.0-rc1~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca0ce9e516c753947aa169da82445f7324655cb9;p=thirdparty%2Fasterisk.git 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) ........ Merged revisions 371888 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@371890 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/channel.c b/main/channel.c index c19af9644a..a2d586c9ee 100644 --- a/main/channel.c +++ b/main/channel.c @@ -1400,6 +1400,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", @@ -1419,6 +1420,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);