]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
coverity fixes
authorJaroslav Kysela <perex@perex.cz>
Fri, 8 Jan 2016 08:19:12 +0000 (09:19 +0100)
committerJaroslav Kysela <perex@perex.cz>
Fri, 8 Jan 2016 08:19:12 +0000 (09:19 +0100)
14 files changed:
src/dvr/dvr.h
src/dvr/dvr_autorec.c
src/dvr/dvr_db.c
src/dvr/dvr_rec.c
src/dvr/dvr_vfsmgr.c
src/esfilter.c
src/input/mpegts/dvb_support.c
src/input/mpegts/iptv/iptv_http.c
src/input/mpegts/scanfile.c
src/misc/m3u.c
src/parsers/bitstream.c
src/plumbing/transcoding.c
src/tcp.c
src/wizard.c

index ce3e45c45f042697bff047a31a00560d887a0df3..61f6499dcad187ba5779eeae7416356c604fd5e1 100644 (file)
@@ -456,9 +456,9 @@ static inline int dvr_entry_is_valid(dvr_entry_t *de)
 
 int dvr_entry_get_mc(dvr_entry_t *de);
 
-const char *dvr_entry_get_retention_string ( dvr_entry_t *de );
+char *dvr_entry_get_retention_string ( dvr_entry_t *de );
 
-const char *dvr_entry_get_removal_string ( dvr_entry_t *de );
+char *dvr_entry_get_removal_string ( dvr_entry_t *de );
 
 uint32_t dvr_entry_get_retention_days( dvr_entry_t *de );
 
index 56e4a3834a9a71ed3be94d07eab9b4fd1415f09f..3d66cd8b3b094d8eefa9e09dc4e2cd064540667f 100644 (file)
@@ -102,10 +102,11 @@ dvr_autorec_completed(dvr_autorec_entry_t *dae, int error_code)
 {
   uint32_t count, total = 0;
   dvr_entry_t *de, *de_prev;
-  uint32_t max_count = dvr_autorec_get_max_count(dae);
+  uint32_t max_count;
   char ubuf[UUID_HEX_SIZE];
 
   if (dae == NULL) return;
+  max_count = dvr_autorec_get_max_count(dae);
   if (max_count <= 0) return;
   while (1) {
     count = 0;
index 35fcd59e80093e08a5ba131b5c340a993c61ee56..09a314d4ba2fbc22fab09c17cd002c3b333ee6fe 100644 (file)
@@ -255,7 +255,7 @@ dvr_entry_get_extra_time_post( dvr_entry_t *de )
   return extra;
 }
 
-const char *
+char *
 dvr_entry_get_retention_string ( dvr_entry_t *de )
 {
   char buf[24];
@@ -271,7 +271,7 @@ dvr_entry_get_retention_string ( dvr_entry_t *de )
   return strdup(buf);
 }
 
-const char *
+char *
 dvr_entry_get_removal_string ( dvr_entry_t *de )
 {
   char buf[24];
@@ -1573,7 +1573,7 @@ static dvr_entry_t *_dvr_entry_update
   if (e && e->episode && e->episode->subtitle) {
     save |= lang_str_set2(&de->de_subtitle, e->episode->subtitle) ? DVR_UPDATED_SUBTITLE : 0;
   } else if (subtitle) {
-    save |= lang_str_set(&de->de_title, subtitle, lang) ? DVR_UPDATED_SUBTITLE : 0;
+    save |= lang_str_set(&de->de_subtitle, subtitle, lang) ? DVR_UPDATED_SUBTITLE : 0;
   }
 
   /* EID */
@@ -3237,6 +3237,7 @@ dvr_entry_delete(dvr_entry_t *de)
   time_t t;
   struct tm tm;
   const char *filename;
+  char *str1, *str2;
   char tbuf[64], ubuf[UUID_HEX_SIZE], *rdir, *postcmd;
   int r, ret = 0;
 
@@ -3245,13 +3246,15 @@ dvr_entry_delete(dvr_entry_t *de)
   if (strftime(tbuf, sizeof(tbuf), "%F %T", &tm) <= 0)
     *tbuf = 0;
 
+  str1 = dvr_entry_get_retention_string(de);
+  str2 = dvr_entry_get_removal_string(de);
   tvhlog(LOG_INFO, "dvr", "delete entry %s \"%s\" on \"%s\" start time %s, "
         "scheduled for recording by \"%s\", retention \"%s\" removal \"%s\"",
          idnode_uuid_as_str(&de->de_id, ubuf),
         lang_str_get(de->de_title, NULL), DVR_CH_NAME(de), tbuf,
-        de->de_creator ?: "",
-        dvr_entry_get_retention_string(de),
-        dvr_entry_get_removal_string(de));
+        de->de_creator ?: "", str1, str2);
+  free(str2);
+  free(str1);
 
   if(!htsmsg_is_empty(de->de_files)) {
 #if ENABLE_INOTIFY
index c9d85ef49b47359ac56033de2171d5e516db5625..53852d64afd965da0917e865d633f8611a5e549c 100644 (file)
@@ -1090,16 +1090,16 @@ dvr_thread_mpegts_stats(dvr_entry_t *de, void *sm_data)
 {
   th_subscription_t *ts;
   pktbuf_t *pb = sm_data;
-  int ret;
+  int ret = 0;
 
-  if (pb == NULL)
-    return 0;
-  if ((ts = de->de_s) != NULL) {
-    if (pb->pb_err) {
-      de->de_data_errors += pb->pb_err;
-      ret = 1;
+  if (pb) {
+    if ((ts = de->de_s) != NULL) {
+      if (pb->pb_err) {
+        de->de_data_errors += pb->pb_err;
+        ret = 1;
+      }
+      subscription_add_bytes_out(ts, pktbuf_len(pb));
     }
-    subscription_add_bytes_out(ts, pktbuf_len(pb));
   }
   return ret;
 }
@@ -1368,6 +1368,8 @@ dvr_thread(void *aux)
     case SMT_START:
       start_time = dispatch_clock;
       packets = 0;
+      if (ss)
+       streaming_start_unref(ss);
       ss = streaming_start_copy((streaming_start_t *)sm->sm_data);
       break;
 
index 6133231a5053ba46d66a271fbb57bb60d719221f..ac323fb999044f4fd647bdb6148533ef3bdbf0e8 100644 (file)
@@ -94,13 +94,14 @@ dvr_vfs_refresh_entry(dvr_entry_t *de)
     return;
   HTSMSG_FOREACH(f, de->de_files)
     if ((m = htsmsg_field_get_map(f)) != NULL) {
-      filename = htsmsg_get_str(m, "filename");
       vfs = dvr_vfs_find1(vfs, m);
       if (vfs) {
         size = htsmsg_get_s64_or_default(m, "size", 0);
         vfs->used_size = size <= vfs->used_size ? vfs->used_size - size : 0;
       }
-      if(statvfs(filename, &vst) < 0 || stat(filename, &st) < 0) {
+      filename = htsmsg_get_str(m, "filename");
+      if(filename == NULL ||
+         statvfs(filename, &vst) < 0 || stat(filename, &st) < 0) {
         tvhlog(LOG_ERR, "dvr", "unable to stat file '%s'", filename);
         goto rem;
       }
index 9c6ce96b8e28909b8adfb409973ab9b2ea9d1134..7f9031ed41550663e3bb0e3a04621cf5d8ce37a3 100644 (file)
@@ -219,8 +219,7 @@ static const char *
 esfilter_class_get_title(idnode_t *self, const char *lang)
 {
   esfilter_t *esf = (esfilter_t *)self;
-  char ubuf[UUID_HEX_SIZE];
-  return idnode_uuid_as_str(&esf->esf_id, ubuf);
+  return idnode_uuid_as_str(&esf->esf_id, prop_sbuf);
 }
 
 static void
index 1c7d7065c0ba7eb66dce64c7fbf4a2269a5033e1..c4fd86f4a7e82f27c925edb05eca3a095c4df23a 100644 (file)
@@ -429,6 +429,9 @@ atsc_get_string
 
       src    += 3;
       srclen -= 3;
+      
+      if (bytecount > srclen)
+        return ls;
 
       if (mode == 0 && compressiontype == 0) {
         tvhtrace("atsc-str", "    %d: comptype 0x%02x, mode 0x%02x, %d bytes: '%.*s'",
index 6decd669f8d86cbf565043c4abdeefdd94723050..2102f008c4638d0890a25e48e32b5bdf82a3c658 100644 (file)
@@ -132,6 +132,8 @@ iptv_http_get_url( http_priv_t *hp, htsmsg_t *m )
   /*
    * extract the URL
    */
+  if (items == NULL)
+    return NULL;
   HTSMSG_FOREACH(f, items) {
     if ((item = htsmsg_field_get_map(f)) == NULL) continue;
     inf = htsmsg_get_map(item, "stream-inf");
index 343fc09966409036bbcc665a703bff3b25970846..4213d1a5dddd802a6d6c005cf53e0e5915ae3be7 100644 (file)
@@ -393,8 +393,10 @@ scanfile_load_one
   if (r) {
     free(mux);
   } else {
-    if (*net == NULL && scanfile_create_network(net, type, name, mux->dmc_fe_delsys))
+    if (*net == NULL && scanfile_create_network(net, type, name, mux->dmc_fe_delsys)) {
+      free(mux);
       return -1;
+    }
     LIST_INSERT_HEAD(&(*net)->sfn_muxes, mux, dmc_link);
   }
   return 1;
index fbc10ab924448d1eed48defd54231f0c88d029d6..e735acb71eccf3152f84571bd2b6ae8527c4e9df 100644 (file)
@@ -271,7 +271,6 @@ multi:
       htsmsg_add_str(item, "m3u-url", get_url(buf, sizeof(buf), p, url));
     } else if (item) {
       htsmsg_destroy(item);
-      free(item);
       item = NULL;
     }
 
index 13ce82546101f775b4f140c5d215ce7d1b381283..5f21449b0c6e1b11feb3a01ff7635449818c48ba 100644 (file)
@@ -108,7 +108,7 @@ read_golomb_ue(bitstream_t *bs)
   for(b = 0; !b && !bs_eof(bs) && lzb < 32; lzb++)
     b = read_bits1(bs);
 
-  if (lzb < 0)
+  if (lzb < 0 || lzb > 31)
     return 0;
   return (1 << lzb) - 1 + read_bits(bs, lzb);
 }
index 568f908b1a51f15b22188c69c7ea0578c164a103..0acde7dab18b826d11665e2448a48070ebefb9b3 100644 (file)
@@ -1162,7 +1162,7 @@ transcoder_stream_video(transcoder_t *t, transcoder_stream_t *ts, th_pkt_t *pkt)
   video_stream_t *vs = (video_stream_t*)ts;
   streaming_message_t *sm;
   th_pkt_t *pkt2;
-  static int max_bitrate = (INT_MAX / 3000) * 0.8;
+  static int max_bitrate = INT_MAX / ((3000*10)/8);
 
   av_init_packet(&packet);
   av_init_packet(&packet2);
@@ -1431,6 +1431,7 @@ transcoder_stream_video(transcoder_t *t, transcoder_stream_t *ts, th_pkt_t *pkt)
   }
 
   /* and pull out a filtered frame */
+  got_output = 0;
   while (1) {
        ret = av_buffersink_get_frame(vs->flt_bufsinkctx, vs->vid_enc_frame);
        if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
index 2b052edc95384a5ab3a1c0f3f418938d829f7eb9..11dd31d73eb8ae041b1cc6d0d8c52e89c3cad22e 100644 (file)
--- a/src/tcp.c
+++ b/src/tcp.c
@@ -121,6 +121,7 @@ tcp_connect(const char *hostname, int port, const char *bindaddr,
   } else {
     snprintf(errbuf, errbufsize, "Invalid protocol family");
     freeaddrinfo(ai);
+    close(fd);
     return -1;
   }
 
index 4619d3f19da4f8b35d75d44f194781a849f3ff23..89dee714431a7d4c862c2b3f739e4132b91e9ac6 100644 (file)
@@ -236,7 +236,7 @@ wizard_page_t *wizard_hello(void)
   page->aux = w = calloc(1, sizeof(wizard_hello_t));
 
   if (config.language_ui)
-    strncpy(w->ui_lang, config.language_ui, sizeof(w->ui_lang));
+    strncpy(w->ui_lang, config.language_ui, sizeof(w->ui_lang)-1);
 
   m = htsmsg_csv_2_list(config.language, ',');
   f = m ? HTSMSG_FIRST(m) : NULL;
@@ -322,7 +322,7 @@ static void login_save(idnode_t *in)
   }
 
   if (w->username[0]) {
-    s = w->username && w->username[0] ? w->username : "*";
+    s = w->username[0] ? w->username : "*";
     conf = htsmsg_create_map();
     htsmsg_add_str(conf, "prefix", w->network);
     htsmsg_add_str(conf, "username", s);