diff --git a/lib/src/ca.c b/lib/src/ca.c index 9c38caa..c35d587 100644 --- a/lib/src/ca.c +++ b/lib/src/ca.c @@ -631,6 +631,8 @@ static int init_ca(struct dddvb *dd, int a, int f, int fd) struct dddvb_ca *ca; char fname[80]; + if (dd->dvbca_num >= DDDVB_MAX_DVB_CA) + return -1; ca = &dd->dvbca[dd->dvbca_num]; ca->dd = dd; ca->anum = a; diff --git a/lib/src/dvb.c b/lib/src/dvb.c index d8b1263..088dfa1 100644 --- a/lib/src/dvb.c +++ b/lib/src/dvb.c @@ -799,6 +799,8 @@ static int dddvb_fe_init(struct dddvb *dd, int a, int f, int fd) int r; uint32_t i, ds; + if (dd->dvbca_num >= DDDVB_MAX_DVB_CA) + return -1; fe = &dd->dvbfe[dd->dvbfe_num]; r = snprintf(fe->name, sizeof(fe->name), "/dev/dvb/adapter%d/frontend%d", a, f); @@ -870,7 +872,7 @@ static int scan_dvbfe(struct dddvb *dd) int a, f, fd; char fname[80]; - for (a = 0; a < 16; a++) { + for (a = 0; a < 256; a++) { for (f = 0; f < 24; f++) { sprintf(fname, "/dev/dvb/adapter%d/frontend%d", a, f); fd = open(fname, O_RDONLY);