From: Niels Ole Salscheider Date: Sat, 11 Aug 2012 16:58:23 +0000 (+0200) Subject: xmltv: catch errors form spawn_and_store_stdout X-Git-Tag: 3.3~186 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1c96e30df778cd0d478beaac92da579ac7cfa8d9;p=thirdparty%2Ftvheadend.git xmltv: catch errors form spawn_and_store_stdout --- diff --git a/src/epggrab/module/xmltv.c b/src/epggrab/module/xmltv.c index 375e54b2f..699e4d4bf 100644 --- a/src/epggrab/module/xmltv.c +++ b/src/epggrab/module/xmltv.c @@ -525,7 +525,8 @@ static int _xmltv_parse static void _xmltv_load_grabbers ( void ) { - size_t i, outlen, p, n; + int outlen; + size_t i, p, n; char *outbuf; char name[1000]; char *tmp, *path; @@ -534,7 +535,7 @@ static void _xmltv_load_grabbers ( void ) outlen = spawn_and_store_stdout(XMLTV_FIND, NULL, &outbuf); /* Process */ - if ( outlen ) { + if ( outlen > 0 ) { p = n = i = 0; while ( i < outlen ) { if ( outbuf[i] == '\n' || outbuf[i] == '\0' ) { @@ -574,7 +575,7 @@ static void _xmltv_load_grabbers ( void ) if (lstat(bin, &st)) continue; if (!(st.st_mode & S_IEXEC)) continue; if (!S_ISREG(st.st_mode)) continue; - if ((outlen = spawn_and_store_stdout(bin, argv, &outbuf))) { + if ((outlen = spawn_and_store_stdout(bin, argv, &outbuf)) > 0) { if (outbuf[outlen-1] == '\n') outbuf[outlen-1] = '\0'; snprintf(name, sizeof(name), "XMLTV: %s", outbuf); epggrab_module_int_create(NULL, bin, name, 3, bin,