Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
DVR: fix the wrong dvr entry access (deferred destroy in retention code)
- coverity fix
  • Loading branch information
perexg committed Jan 8, 2016
1 parent 06e80eb commit 3b48f6b
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 3 deletions.
1 change: 1 addition & 0 deletions src/dvr/dvr.h
Expand Up @@ -164,6 +164,7 @@ typedef struct dvr_entry {
char *de_channel_name;

gtimer_t de_timer;
gtimer_t de_deferred_timer;

/**
* These meta fields will stay valid as long as reference count > 0
Expand Down
20 changes: 18 additions & 2 deletions src/dvr/dvr_db.c
Expand Up @@ -42,6 +42,7 @@ static int dvr_in_init;
static gtimer_t dvr_dbus_timer;
#endif

static void dvr_entry_deferred_destroy(dvr_entry_t *de);
static void dvr_entry_set_timer(dvr_entry_t *de);
static void dvr_timer_rerecord(void *aux);
static void dvr_timer_expire(void *aux);
Expand Down Expand Up @@ -403,9 +404,9 @@ dvr_entry_retention_timer(dvr_entry_t *de)
}
save = 0;
if (dvr_get_filename(de))
save = dvr_entry_delete(de); // delete actual file
save = dvr_entry_delete(de); // delete actual file
if (retention == DVR_RET_ONREMOVE) {
dvr_entry_destroy(de, 1); // also remove database entry
dvr_entry_deferred_destroy(de); // also remove database entry
return;
}
if (save)
Expand Down Expand Up @@ -1334,6 +1335,7 @@ dvr_entry_destroy(dvr_entry_t *de, int delconf)
#endif

gtimer_disarm(&de->de_timer);
gtimer_disarm(&de->de_deferred_timer);
#if ENABLE_DBUS_1
gtimer_arm(&dvr_dbus_timer, dvr_dbus_timer_cb, NULL, 2);
#endif
Expand All @@ -1351,6 +1353,20 @@ dvr_entry_destroy(dvr_entry_t *de, int delconf)
dvr_entry_dec_ref(de);
}

/**
*
*/
static void _deferred_destroy_cb(void *aux)
{
dvr_entry_destroy(aux, 1);
}

static void
dvr_entry_deferred_destroy(dvr_entry_t *de)
{
gtimer_arm(&de->de_deferred_timer, _deferred_destroy_cb, de, 0);
}

/**
*
*/
Expand Down
2 changes: 1 addition & 1 deletion src/input/mpegts/dvb_support.c
Expand Up @@ -429,7 +429,7 @@ atsc_get_string

src += 3;
srclen -= 3;

if (bytecount > srclen)
return ls;

Expand Down

0 comments on commit 3b48f6b

Please sign in to comment.