diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-03-02 14:07:30 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-03-02 14:07:30 +0000 |
| commit | ba78b6f16712c40917312412c91f5e0c11742e12 (patch) | |
| tree | e6773b0b12914fc372002d8de2a4c6d67a91112e /src/MetalinkParserStateMachine.cc | |
| parent | eb32f5647923afdc30cb170b84424230714c411f (diff) | |
2010-03-02 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added strict attribute validation for metalink4. When
specification violation is found, discard the whole document.
* src/ExpatMetalinkProcessor.cc
* src/MetalinkParserStateMachine.cc
* src/MetalinkParserStateMachine.h
* src/MetalinkParserStateV4Impl.cc
* src/XML2SAXMetalinkProcessor.cc
* test/Makefile.am
* test/MetalinkProcessorTest.cc
* test/metalink4-attrs.xml: Removed
* test/metalink4-dirtraversal.xml: Removed
Diffstat (limited to 'src/MetalinkParserStateMachine.cc')
| -rw-r--r-- | src/MetalinkParserStateMachine.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/MetalinkParserStateMachine.cc b/src/MetalinkParserStateMachine.cc index 103662c9..2f114d4a 100644 --- a/src/MetalinkParserStateMachine.cc +++ b/src/MetalinkParserStateMachine.cc @@ -33,6 +33,10 @@ */ /* copyright --> */ #include "MetalinkParserStateMachine.h" + +#include <sstream> +#include <iterator> + #include "MetalinkParserStateImpl.h" #include "MetalinkParserStateV3Impl.h" #include "MetalinkParserStateV4Impl.h" @@ -514,4 +518,21 @@ bool MetalinkParserStateMachine::needsCharactersBuffering() const return _stateStack.top()->needsCharactersBuffering(); } +void MetalinkParserStateMachine::logError(const std::string& log) +{ + if(_errors.size() < 10) { + _errors.push_back(log); + } +} + +std::string MetalinkParserStateMachine::getErrorString() const +{ + std::stringstream error; + error << "Specification violation: "; + std::copy(_errors.begin(), _errors.end(), + std::ostream_iterator<std::string>(error, ", ")); + return error.str(); +} + + } // namespace aria2 |
