unsigned cmd, uint32_t value);
int dvb_set_sys(struct dvb_v5_fe_parms *parms,
fe_delivery_system_t sys);
-int dvb_add_parms_for_sys(struct dtv_property *dvb_prop,
- unsigned max_size,
fe_delivery_system_t sys);
int dvb_set_compat_delivery_system(struct dvb_v5_fe_parms *parms,
uint32_t desired_system);
}
-int dvb_add_parms_for_sys(struct dtv_property *dvb_prop,
- unsigned max_size,
+int dvb_add_parms_for_sys(struct dvb_v5_fe_parms *p,
fe_delivery_system_t sys)
{
+ struct dvb_v5_fe_parms_priv *parms = (void *)p;
+ struct dtv_property *dvb_prop = parms->dvb_prop;
+ unsigned max_size = ARRAY_SIZE(parms->dvb_prop);
const unsigned int *sys_props;
int n;
return EINVAL;
n = 0;
- while (sys_props[n]) {
+ while (sys_props[n] && n < max_size - 1) {
dvb_prop[n].cmd = sys_props[n];
dvb_prop[n].u.data = 0;
n++;
}
}
- rc = dvb_add_parms_for_sys(parms->dvb_prop,
- ARRAY_SIZE(parms->dvb_prop), sys);
+ rc = dvb_add_parms_for_sys(&parms->p, sys);
if (rc < 0)
return EINVAL;