Exemple #1
0
 void String::setTaint(bitstring b, CStrRef msg) const {
   if(m_px) {
     m_px->setTaint(b);
     if(is_tainting_metadata(b)){
       getTaintedMetadata()->setTaintedOriginal(this);
       getTaintedMetadata()->setTaintedPlace(msg.toKey());
     }
   }
 }
Exemple #2
0
 void String::setTaint(bitstring b) const {
   if(m_px) {
     m_px->setTaint(b);
     if(is_tainting_metadata(b)){
       getTaintedMetadata()->setTaintedOriginal(this);
       getTaintedMetadata()->setTaintedPlace();
     }
   }
 }
Exemple #3
0
void StringData::unsetTaint(bitstring b){
  m_tainting = m_tainting & (~b);
  if(is_tainting_metadata(b)){
    // erasing the metadata
    if(m_tainted_metadata != NULL){
      delete m_tainted_metadata;
      m_tainted_metadata = NULL;
    }
  }
}
Exemple #4
0
void StringData::setTaint(bitstring b){
  m_tainting = m_tainting | b;
  if(is_tainting_metadata(b)){
    // resetting the metadata
    if(m_tainted_metadata != NULL){
      delete m_tainted_metadata;
      m_tainted_metadata = NULL;
    }
    m_tainted_metadata = new TaintedMetadata();
  }
}
Exemple #5
0
Taint& Taint::operator <<(const StringData &src) {
  bitstring src_bits = src.getTaint();

  if (!m_bits) {
    return *this;
  }

  *m_bits = *m_bits | src_bits;

  if (m_metadata && is_tainting_metadata(src_bits)) {
    propagateMetaData(src.getTaintedMetadata());
  }

  return *this;
}