void GetAllFileTypes(CObArray &obArray)
{
IXMLDOMNodeListPtr pNodeList;
HRESULT hr = m_pXMLDOMDoc->get_childNodes(&pNodeList);
if ( hr != S_OK ) return; IXMLDOMNodePtr pNode;
long lLength;
pNodeList->get_length(&lLength);
pNodeList->reset(); for ( int i = 0 ; i < lLength ; i++ )
{
IXMLDOMNodePtr pNode;
hr = pNodeList->nextNode(&pNode);
if ( hr != S_OK ){
continue;
} }
}不要使用void GetAllFileTypes(CObArray &obArray)
{
IXMLDOMNodeListPtr pNodeList;
HRESULT hr = m_pXMLDOMDoc->get_childNodes(&pNodeList);
if ( hr != S_OK ) return; IXMLDOMNodePtr pNode;
long lLength;
pNodeList->get_length(&lLength);
pNodeList->reset();
for ( int i = 0 ; i < lLength ; i++ )
{
IXMLDOMNodePtr pNode;
hr = pNodeList->Get_Item(i, &pNode);
if ( hr != S_OK ){
continue;
} }
}也就是,使用:
pNodeList->reset();
hr = pNodeList->nextNode(&pNode);
组合,而不要直接使用
hr = pNodeList->get_item(i, &pNode);
因为根据实际使用,发现后者存在漏洞,经常会取不出pNode。
{
IXMLDOMNodeListPtr pNodeList;
HRESULT hr = m_pXMLDOMDoc->get_childNodes(&pNodeList);
if ( hr != S_OK ) return; IXMLDOMNodePtr pNode;
long lLength;
pNodeList->get_length(&lLength);
pNodeList->reset(); for ( int i = 0 ; i < lLength ; i++ )
{
IXMLDOMNodePtr pNode;
hr = pNodeList->nextNode(&pNode);
if ( hr != S_OK ){
continue;
} }
}不要使用void GetAllFileTypes(CObArray &obArray)
{
IXMLDOMNodeListPtr pNodeList;
HRESULT hr = m_pXMLDOMDoc->get_childNodes(&pNodeList);
if ( hr != S_OK ) return; IXMLDOMNodePtr pNode;
long lLength;
pNodeList->get_length(&lLength);
pNodeList->reset();
for ( int i = 0 ; i < lLength ; i++ )
{
IXMLDOMNodePtr pNode;
hr = pNodeList->Get_Item(i, &pNode);
if ( hr != S_OK ){
continue;
} }
}也就是,使用:
pNodeList->reset();
hr = pNodeList->nextNode(&pNode);
组合,而不要直接使用
hr = pNodeList->get_item(i, &pNode);
因为根据实际使用,发现后者存在漏洞,经常会取不出pNode。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货