HP Fortify помечает критическую ошибку нарушения конфиденциальности при записи идентификатора в архив

void SampleBaseClass::Serialize(CArchive& ar)
{
// Serialize base class data first
CObject::Serialize(ar);

// Serialize my data now
if (ar.IsStoring())
{
ar << m_sPersonIdentificationNumber; //Flags the critical issue here
}
else
{
......
}
}

Вот объявление SampleBaseClass

class SampleBaseClass : public CObject
{
DECLARE_SERIAL(SampleBaseClass)
// Constructors / Destructor
public:
SampleBaseClass();
SampleBaseClass(const SampleBaseClass& cpy);
SampleBaseClass& operator =(const SampleBaseClass& cpy);
virtual ~SampleBaseClass();

// Attributes
public:
double                      m_dPersonId;
CString                     m_sPersonIdentificationNumber;// Operations
public:
virtual void Serialize(CArchive& ar);

protected:
void Copy(const SampleBaseClass& cpy);
};

Кроме того, у меня есть<<«оператор перегружен. Ниже приведена перегруженная функция

    template< typename BaseType, class StringTraits >
CArchive& CArchive::operator<<(const ATL::CStringT<BaseType, StringTraits>& str)
{
AfxWriteStringLength(*this, str.GetLength(), sizeof(BaseType) == sizeof(wchar_t));
Write(str, str.GetLength()*sizeof(BaseType));
return *this;
}

Как я могу решить эту проблему без значительного изменения дизайна?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]