Added some device and subdevice validity checks.
This commit is contained in:
parent
0038ed1467
commit
4df5ffd451
7 changed files with 30 additions and 8 deletions
|
@ -30,6 +30,7 @@ int _comedi_set_buffer_size(comedi_t *it, unsigned int subdev, unsigned int size
|
|||
int ret;
|
||||
comedi_bufconfig bc;
|
||||
|
||||
if(!valid_subd(it,subdev)) return -1;
|
||||
memset(&bc, 0, sizeof(bc));
|
||||
bc.subdevice = subdev;
|
||||
bc.size = size;
|
||||
|
@ -45,6 +46,7 @@ int _comedi_set_max_buffer_size(comedi_t *it, unsigned int subdev, unsigned int
|
|||
int ret;
|
||||
comedi_bufconfig bc;
|
||||
|
||||
if(!valid_subd(it,subdev)) return -1;
|
||||
memset(&bc, 0, sizeof(bc));
|
||||
bc.subdevice = subdev;
|
||||
bc.maximum_size = max_size;
|
||||
|
@ -72,6 +74,7 @@ int _comedi_get_buffer_contents(comedi_t *it, unsigned int subdev)
|
|||
int ret;
|
||||
comedi_bufinfo bi;
|
||||
|
||||
if(!valid_subd(it,subdev)) return -1;
|
||||
memset(&bi, 0, sizeof(bi));
|
||||
bi.subdevice = subdev;
|
||||
ret = comedi_ioctl(it->fd, COMEDI_BUFINFO, &bi);
|
||||
|
@ -89,6 +92,7 @@ int _comedi_mark_buffer_read(comedi_t *it, unsigned int subdev, unsigned int byt
|
|||
int ret;
|
||||
comedi_bufinfo bi;
|
||||
|
||||
if(!valid_subd(it,subdev)) return -1;
|
||||
memset(&bi, 0, sizeof(bi));
|
||||
bi.subdevice = subdev;
|
||||
bi.bytes_read = bytes;
|
||||
|
@ -107,6 +111,7 @@ int _comedi_mark_buffer_written(comedi_t *it, unsigned int subdev, unsigned int
|
|||
int ret;
|
||||
comedi_bufinfo bi;
|
||||
|
||||
if(!valid_subd(it,subdev)) return -1;
|
||||
memset(&bi, 0, sizeof(bi));
|
||||
bi.subdevice = subdev;
|
||||
bi.bytes_written = bytes;
|
||||
|
@ -125,6 +130,7 @@ int _comedi_get_buffer_offset(comedi_t *it, unsigned int subdev)
|
|||
int ret;
|
||||
comedi_bufinfo bi;
|
||||
|
||||
if(!valid_subd(it,subdev)) return -1;
|
||||
memset(&bi, 0, sizeof(bi));
|
||||
bi.subdevice = subdev;
|
||||
ret = comedi_ioctl(it->fd, COMEDI_BUFINFO, &bi);
|
||||
|
@ -138,6 +144,7 @@ int _comedi_get_front_count(comedi_t *it, unsigned int subdev)
|
|||
int ret;
|
||||
comedi_bufinfo bi;
|
||||
|
||||
if(!valid_subd(it,subdev)) return -1;
|
||||
memset(&bi, 0, sizeof(bi));
|
||||
bi.subdevice = subdev;
|
||||
ret = comedi_ioctl(it->fd, COMEDI_BUFINFO, &bi);
|
||||
|
|
|
@ -156,6 +156,7 @@ int _comedi_apply_parsed_calibration( comedi_t *dev, unsigned int subdev, unsign
|
|||
{
|
||||
int retval;
|
||||
|
||||
if(!valid_dev(dev)) return -1;
|
||||
retval = check_cal_file( dev, calibration );
|
||||
if( retval < 0 ) return retval;
|
||||
|
||||
|
@ -185,6 +186,7 @@ char* _comedi_get_default_calibration_path( comedi_t *dev )
|
|||
char *board_name;
|
||||
const char *driver_name;
|
||||
|
||||
if(!valid_dev(dev)) return NULL;
|
||||
if( fstat( comedi_fileno( dev ), &file_stats ) < 0 )
|
||||
{
|
||||
COMEDILIB_DEBUG( 3, "failed to get file stats of comedi device file\n" );
|
||||
|
|
16
lib/comedi.c
16
lib/comedi.c
|
@ -89,6 +89,8 @@ int _comedi_close(comedi_t *it)
|
|||
subdevice *s;
|
||||
int i,j;
|
||||
|
||||
if(!valid_dev(it))
|
||||
return -1;
|
||||
it->magic=0;
|
||||
|
||||
for(i=0;i<it->n_subdevices;i++){
|
||||
|
@ -124,28 +126,28 @@ int _comedi_close(comedi_t *it)
|
|||
EXPORT_ALIAS_DEFAULT(_comedi_cancel,comedi_cancel,0.7.18);
|
||||
int _comedi_cancel(comedi_t *it,unsigned int subdevice)
|
||||
{
|
||||
if(!valid_dev(it)) return -1;
|
||||
return comedi_ioctl(it->fd, COMEDI_CANCEL, (void*)(unsigned long)subdevice);
|
||||
}
|
||||
|
||||
EXPORT_ALIAS_DEFAULT(_comedi_poll,comedi_poll,0.7.18);
|
||||
int _comedi_poll(comedi_t *it,unsigned int subdevice)
|
||||
{
|
||||
if(!valid_dev(it)) return -1;
|
||||
return comedi_ioctl(it->fd, COMEDI_POLL, (void*)(unsigned long)subdevice);
|
||||
}
|
||||
|
||||
EXPORT_ALIAS_DEFAULT(_comedi_fileno,comedi_fileno,0.7.18);
|
||||
int _comedi_fileno(comedi_t *it)
|
||||
{
|
||||
if(!it)
|
||||
return -1;
|
||||
|
||||
if(!valid_dev(it)) return -1;
|
||||
return it->fd;
|
||||
}
|
||||
|
||||
EXPORT_ALIAS_DEFAULT(_comedi_trigger,comedi_trigger,0.7.18);
|
||||
int _comedi_trigger(comedi_t *it,comedi_trig *t)
|
||||
{
|
||||
if(!it || !t)
|
||||
if(!valid_dev(it) || !t)
|
||||
return -1;
|
||||
|
||||
return comedi_ioctl(it->fd, COMEDI_TRIG, t);
|
||||
|
@ -155,6 +157,7 @@ EXPORT_ALIAS_DEFAULT(_comedi_command,comedi_command,0.7.18);
|
|||
int _comedi_command(comedi_t *it,comedi_cmd *t)
|
||||
{
|
||||
int ret;
|
||||
if(!valid_dev(it)) return -1;
|
||||
ret = comedi_ioctl(it->fd, COMEDI_CMD, t);
|
||||
__comedi_errno = errno;
|
||||
switch(__comedi_errno){
|
||||
|
@ -169,6 +172,7 @@ EXPORT_ALIAS_DEFAULT(_comedi_command_test,comedi_command_test,0.7.18);
|
|||
int _comedi_command_test(comedi_t *it,comedi_cmd *t)
|
||||
{
|
||||
int ret;
|
||||
if(!valid_dev(it)) return -1;
|
||||
ret = comedi_ioctl(it->fd, COMEDI_CMDTEST, t);
|
||||
__comedi_errno = errno;
|
||||
switch(__comedi_errno){
|
||||
|
@ -183,6 +187,7 @@ EXPORT_ALIAS_DEFAULT(_comedi_do_insnlist,comedi_do_insnlist,0.7.18);
|
|||
int _comedi_do_insnlist(comedi_t *it,comedi_insnlist *il)
|
||||
{
|
||||
int ret;
|
||||
if(!valid_dev(it)) return -1;
|
||||
ret = comedi_ioctl(it->fd, COMEDI_INSNLIST, il);
|
||||
__comedi_errno = errno;
|
||||
return ret;
|
||||
|
@ -191,6 +196,7 @@ int _comedi_do_insnlist(comedi_t *it,comedi_insnlist *il)
|
|||
EXPORT_ALIAS_DEFAULT(_comedi_do_insn,comedi_do_insn,0.7.18);
|
||||
int _comedi_do_insn(comedi_t *it,comedi_insn *insn)
|
||||
{
|
||||
if(!valid_dev(it)) return -1;
|
||||
if(it->has_insn_ioctl){
|
||||
return comedi_ioctl(it->fd, COMEDI_INSN, insn);
|
||||
}else{
|
||||
|
@ -210,12 +216,14 @@ int _comedi_do_insn(comedi_t *it,comedi_insn *insn)
|
|||
EXPORT_ALIAS_DEFAULT(_comedi_lock,comedi_lock,0.7.18);
|
||||
int _comedi_lock(comedi_t *it,unsigned int subdevice)
|
||||
{
|
||||
if(!valid_dev(it)) return -1;
|
||||
return comedi_ioctl(it->fd, COMEDI_LOCK, (void*)(unsigned long)subdevice);
|
||||
}
|
||||
|
||||
EXPORT_ALIAS_DEFAULT(_comedi_unlock,comedi_unlock,0.7.18);
|
||||
int _comedi_unlock(comedi_t *it,unsigned int subdevice)
|
||||
{
|
||||
if(!valid_dev(it)) return -1;
|
||||
return comedi_ioctl(it->fd, COMEDI_UNLOCK, (void*)(unsigned long)subdevice);
|
||||
}
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ const char* _comedi_get_board_name(comedi_t *it)
|
|||
EXPORT_ALIAS_VER(_comedi_get_subdevice_flags_old, comedi_get_subdevice_flags,0.7.18);
|
||||
int _comedi_get_subdevice_flags_old(comedi_t *it,unsigned int subd)
|
||||
{
|
||||
if(!valid_dev(it))
|
||||
if(!valid_subd(it,subd))
|
||||
return 0;
|
||||
return it->subdevices[subd].subd_flags;
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ int _comedi_get_subdevice_flags(comedi_t *it,unsigned int subd)
|
|||
comedi_subdinfo *s;
|
||||
int flags;
|
||||
int ret;
|
||||
if(!valid_dev(it))
|
||||
if(!valid_subd(it,subd))
|
||||
return -1;
|
||||
s = calloc(it->n_subdevices, sizeof(comedi_subdinfo));
|
||||
if(s == NULL)
|
||||
|
@ -107,7 +107,7 @@ int _comedi_get_subdevice_flags(comedi_t *it,unsigned int subd)
|
|||
EXPORT_ALIAS_DEFAULT(_comedi_get_subdevice_type,comedi_get_subdevice_type,0.7.18);
|
||||
int _comedi_get_subdevice_type(comedi_t *it,unsigned int subd)
|
||||
{
|
||||
if(!valid_dev(it))
|
||||
if(!valid_subd(it,subd))
|
||||
return -1;
|
||||
|
||||
return it->subdevices[subd].type;
|
||||
|
@ -171,6 +171,8 @@ lsampl_t _comedi_get_maxdata(comedi_t *it,unsigned int subdevice,unsigned int ch
|
|||
EXPORT_ALIAS_DEFAULT(_comedi_maxdata_is_chan_specific,comedi_maxdata_is_chan_specific,0.7.18);
|
||||
int _comedi_maxdata_is_chan_specific(comedi_t *it,unsigned int subdevice)
|
||||
{
|
||||
if(!valid_subd(it,subdevice))
|
||||
return -1;
|
||||
if(it->subdevices[subdevice].maxdata_list)
|
||||
return 1;
|
||||
return 0;
|
||||
|
|
|
@ -136,6 +136,7 @@ int _comedi_get_n_ranges(comedi_t *it,unsigned int subd,unsigned int chan)
|
|||
EXPORT_ALIAS_DEFAULT(_comedi_range_is_chan_specific,comedi_range_is_chan_specific,0.7.18);
|
||||
int _comedi_range_is_chan_specific(comedi_t *it,unsigned int subd)
|
||||
{
|
||||
if(!valid_subd(it,subd)) return -1;
|
||||
return (it->subdevices[subd].subd_flags&SDF_RANGETYPE)?1:0;
|
||||
}
|
||||
|
||||
|
|
2
lib/sv.c
2
lib/sv.c
|
@ -72,6 +72,8 @@ int _comedi_sv_update(comedi_sv_t *it)
|
|||
EXPORT_ALIAS_DEFAULT(_comedi_sv_measure,comedi_sv_measure,0.7.18);
|
||||
int _comedi_sv_measure(comedi_sv_t *it,double *data)
|
||||
{
|
||||
if(!it)return -1;
|
||||
if(!valid_subd(it->dev,it->subdevice))return -1;
|
||||
if(it->dev->subdevices[it->subdevice].subd_flags & SDF_LSAMPL){
|
||||
return sv_measure_l(it,data);
|
||||
}else{
|
||||
|
|
|
@ -147,7 +147,7 @@ int _comedi_get_timer(comedi_t *it,unsigned int subdev,double freq,
|
|||
{
|
||||
int timer_type;
|
||||
|
||||
if(!it || !trigvar || !actual_freq)
|
||||
if(!valid_subd(it,subdev) || !trigvar || !actual_freq)
|
||||
return -1;
|
||||
|
||||
timer_type=it->subdevices[subdev].timer_type;
|
||||
|
|
Loading…
Add table
Reference in a new issue