vlc | branch: master | Filip Roséen <[email protected]> | Wed Mar 15 10:10:37 2017 +0100| [6f3de35b03dca869d3e388da0aff72b00f61b76a] | committer: Jean-Baptiste Kempf
demux/playlist/dvb: prevent null-dereference on truncated lines All three of ParseFec, ParseModulation, and Parseguard, are potentially called with NULL (on unexpected (truncated) input), these changes make sure that we do not dereference the passed pointer if such happens. Instead NULL is returned to signal that the parsing failed. fixes: #18126 Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6f3de35b03dca869d3e388da0aff72b00f61b76a --- modules/demux/playlist/dvb.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/demux/playlist/dvb.c b/modules/demux/playlist/dvb.c index d5ef313..72d07d3 100644 --- a/modules/demux/playlist/dvb.c +++ b/modules/demux/playlist/dvb.c @@ -119,7 +119,7 @@ static const char *ParseFEC(const char *str) { "AUTO", "" }, { "NONE", "0" } }; - if (strncmp(str, "FEC_", 4)) + if (str == NULL || strncmp(str, "FEC_", 4)) return NULL; str += 4; @@ -143,6 +143,9 @@ static const char *ParseModulation(const char *str) { "VSB_16", "16VSB" }, { "VSB_8", "8VSB" } }; + if( str == NULL ) + return NULL; + const struct mod *m = bsearch(str, tab, sizeof (tab) / sizeof(tab[0]), sizeof (tab[0]), cmp); return (m != NULL) ? m->vlc : NULL; @@ -160,7 +163,7 @@ static const char *ParseGuard(const char *str) { "1_8", "1/8" }, { "AUTO", "" }, }; - if (strncmp(str, "GUARD_INTERVAL_", 15)) + if (str == NULL || strncmp(str, "GUARD_INTERVAL_", 15)) return NULL; str += 15; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
