Changeset 1295

Show
Ignore:
Timestamp:
07/13/08 15:28:16 (13 years ago)
Author:
ppalmers
Message:

add range checks for libcontrol indexes. add support for signals w/o arguments

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/libffado-2.0/src/libcontrol/ClockSelect.cpp

    r1288 r1295  
    4444    if(idx >= (int)v.size()) { 
    4545        debugError("index out of range\n"); 
     46        return false; 
     47    } 
     48    if(idx < 0) { 
     49        debugError("index < 0\n"); 
    4650        return false; 
    4751    } 
     
    8488    if(idx >= (int)v.size()) { 
    8589        debugError("index out of range\n"); 
    86         return false; 
     90        return "Error"; 
     91    } 
     92    if(idx < 0) { 
     93        debugError("index < 0\n"); 
     94        return "Error"; 
    8795    } 
    8896    return v.at(idx).description; 
     
    185193{ 
    186194    std::vector<int> freqs = m_Device.getSupportedSamplingFrequencies(); 
    187     if (idx < (int)freqs.size()) { 
     195    if (idx >= 0 && idx < (int)freqs.size()) { 
    188196        if(!m_Device.setSamplingFrequency(freqs.at(idx))) { 
    189197            debugWarning("Could not select samplerate\n"); 
     
    221229{ 
    222230    char tmp[16]; 
    223     std::string retval = "bad attr index"; 
     231    std::string retval = "Error"; 
    224232    std::vector<int> freqs = m_Device.getSupportedSamplingFrequencies(); 
    225     if (idx < (int)freqs.size()) { 
     233    if (idx >= 0 && idx < (int)freqs.size()) { 
    226234        snprintf(tmp, 16, "%u", freqs.at(idx)); 
    227235        retval = tmp; 
  • branches/libffado-2.0/src/libcontrol/Element.cpp

    r1292 r1295  
    158158} 
    159159 
     160bool 
     161Element::emitSignal(int id) 
     162{ 
     163    for ( std::vector< SignalFunctor* >::iterator it = m_signalHandlers.begin(); 
     164          it != m_signalHandlers.end(); 
     165          ++it ) 
     166    { 
     167        SignalFunctor *f = *it; 
     168        if(f && f->m_id == id) (*f)(); 
     169    } 
     170    return true; 
     171} 
     172 
    160173//// --- Container --- //// 
    161174Container::Container(Element *p) 
     
    166179Container::Container(Element *p, std::string n) 
    167180: Element(p, n) 
     181{ 
     182} 
     183 
     184Container::~Container() 
    168185{ 
    169186} 
  • branches/libffado-2.0/src/libcontrol/Element.h

    r1201 r1295  
    5050    virtual ~SignalFunctor() {} 
    5151 
    52     virtual void operator() (int arg) = 0; 
     52    virtual void operator() () = 0; 
     53    virtual void operator() (int) = 0; 
    5354protected: 
    5455    int m_id; 
     
    103104protected: 
    104105    bool            emitSignal(int id, int value); 
     106    bool            emitSignal(int id); 
    105107    Util::Mutex&    getLock(); 
    106108 
     
    138140    Container(Element *); 
    139141    Container(Element *, std::string n); 
    140     virtual ~Container() {}
    141      
     142    virtual ~Container()
     143 
    142144    virtual bool addElement(Element *e); 
    143145    virtual bool deleteElement(Element *e);