void
dvr_event_replaced(epg_broadcast_t *e, epg_broadcast_t *new_e)
{
- dvr_entry_t *de;
+ dvr_entry_t *de, *de_next;
channel_t *ch = e->channel;
epg_broadcast_t *e2;
char ubuf[UUID_HEX_SIZE];
if (ch == NULL || e == new_e) return;
/* Existing entry */
- LIST_FOREACH(de, &ch->ch_dvrs, de_channel_link) {
+ for (de = LIST_FIRST(&ch->ch_dvrs); de; de = de_next) {
+ de_next = LIST_NEXT(de, de_channel_link);
if (de->de_bcast != e)
continue;
length = (ptr[6] & 0x0f) << 16 | ptr[7] << 8 | ptr[8];
stop = start + length;
titlelen = ptr[9];
+
+ if (12 + titlelen > len) break;
+
dlen = ((ptr[10+titlelen] & 0x0f) << 8) | ptr[11+titlelen];
size = titlelen + dlen + 12;
tvhtrace("psip", " %03d: titlelen %d, dlen %d", i, titlelen, dlen);
}
htsmsg_destroy(conf);
- if (s && s[0] != '*' && w->password && w->password[0]) {
+ if (s[0] != '*' && w->password[0]) {
conf = htsmsg_create_map();
htsmsg_add_bool(conf, "enabled", 1);
htsmsg_add_str(conf, "username", s);