diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-08-04 12:15:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-04 12:15:54 +0200 |
commit | bd032a4734d39a7d6b91a4455694d692eb0a11fe (patch) | |
tree | 5a93c725e3c0662353f4cb27ed237d5ce0ae5044 /searchlib | |
parent | 18bfe04965246e119fd4779cd44afb99d06a3698 (diff) | |
parent | 7bbad58435bf428089550eacd4e5d9daf3773761 (diff) |
Merge pull request #3046 from yahoo/balder/avoid-inlining
Balder/avoid inlining
Diffstat (limited to 'searchlib')
21 files changed, 48 insertions, 106 deletions
diff --git a/searchlib/src/tests/query/query-old.cpp b/searchlib/src/tests/query/query-old.cpp index e8e0614f51a..77fe813dda5 100644 --- a/searchlib/src/tests/query/query-old.cpp +++ b/searchlib/src/tests/query/query-old.cpp @@ -648,4 +648,9 @@ TEST("require that incorrectly specified diversity can be parsed") { EXPECT_FALSE(descending_query.isValid()); } +TEST("require that we do not break the stack on bad query") { + QueryTermSimple term("<form><iframe+	 +src=\\\"javascript:alert(1)\\\" 	;>", QueryTerm::WORD); + EXPECT_FALSE(term.isValid()); +} + TEST_MAIN() { TEST_RUN_ALL(); } diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp index 5c26b19f436..e6c9e9c0590 100644 --- a/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp +++ b/searchlib/src/vespa/searchlib/attribute/attribute_weighted_set_blueprint.cpp @@ -152,16 +152,14 @@ AttributeWeightedSetBlueprint::addToken(std::unique_ptr<ISearchContext> context, } queryeval::SearchIterator::UP -AttributeWeightedSetBlueprint::createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, - bool strict) const +AttributeWeightedSetBlueprint::createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, bool strict) const { assert(tfmda.size() == 1); fef::TermFieldMatchData &tfmd = *tfmda[0]; if (strict) { // use generic weighted set search std::vector<queryeval::SearchIterator*> children(_contexts.size()); for (size_t i = 0; i < _contexts.size(); ++i) { - children[i] = _contexts[i]->createIterator(&tfmd, - true).release(); + children[i] = _contexts[i]->createIterator(&tfmd, true).release(); } return queryeval::SearchIterator::UP(queryeval::WeightedSetTermSearch::create(children, tfmd, _weights)); } else { // use attribute filter optimization diff --git a/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp b/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp index 0b9a0c23a80..169dfd45863 100644 --- a/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp +++ b/searchlib/src/vespa/searchlib/fef/matchdatalayout.cpp @@ -2,8 +2,7 @@ #include "matchdatalayout.h" -namespace search { -namespace fef { +namespace search::fef { MatchDataLayout::MatchDataLayout() : _numTermFields(0), @@ -26,5 +25,4 @@ MatchDataLayout::createMatchData() const return md; } -} // namespace fef -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/fef/matchdatalayout.h b/searchlib/src/vespa/searchlib/fef/matchdatalayout.h index b50e6bd32ed..53f94128e67 100644 --- a/searchlib/src/vespa/searchlib/fef/matchdatalayout.h +++ b/searchlib/src/vespa/searchlib/fef/matchdatalayout.h @@ -5,8 +5,7 @@ #include "handle.h" #include "matchdata.h" -namespace search { -namespace fef { +namespace search::fef { /** * This class is used to describe the layout of term match data and @@ -46,6 +45,4 @@ public: MatchData::UP createMatchData() const; }; -} // namespace fef -} // namespace search - +} diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp index 4b5fb6fce94..7cfc6afa72d 100644 --- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp +++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.cpp @@ -1,11 +1,8 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "termfieldmatchdata.h" -#include "fieldinfo.h" -#include <algorithm> -namespace search { -namespace fef { +namespace search::fef { TermFieldMatchData::TermFieldMatchData() : _docId(invalidId()), @@ -114,5 +111,4 @@ TermFieldMatchData::appendPositionToAllocatedVector(const TermFieldMatchDataPosi } } -} // namespace fef -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h index e921e533cc3..2d91764f7c9 100644 --- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h +++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdata.h @@ -60,11 +60,6 @@ private: friend class ::MatchDataHeapTest; public: - /** - * This gives you access to the underlying positions. - * @return the array of positions. - */ - MutablePositionsIterator getPositions() { return allocated() ? getMultiple() : getFixed(); } PositionsIterator begin() const { return allocated() ? getMultiple() : getFixed(); } PositionsIterator end() const { return allocated() ? getMultiple() + _sz : empty() ? getFixed() : getFixed()+1; } size_t size() const { return _sz; } @@ -80,9 +75,7 @@ public: * set. **/ TermFieldMatchData(); - TermFieldMatchData(const TermFieldMatchData & rhs); - ~TermFieldMatchData(); TermFieldMatchData & operator = (const TermFieldMatchData & rhs); diff --git a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h index 67db997a273..54ae3e850da 100644 --- a/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h +++ b/searchlib/src/vespa/searchlib/fef/termfieldmatchdataarray.h @@ -6,8 +6,7 @@ #include <cassert> #include <cstddef> -namespace search { -namespace fef { +namespace search::fef { class TermFieldMatchData; @@ -68,6 +67,4 @@ public: } }; -} // namespace fef -} // namespace search - +} diff --git a/searchlib/src/vespa/searchlib/query/queryterm.cpp b/searchlib/src/vespa/searchlib/query/queryterm.cpp index 694988ef74e..70cbcd37ee0 100644 --- a/searchlib/src/vespa/searchlib/query/queryterm.cpp +++ b/searchlib/src/vespa/searchlib/query/queryterm.cpp @@ -367,9 +367,9 @@ QueryTermSimple::QueryTermSimple(const string & term_, SearchTerm type) : { if (isFullRange(_term)) { stringref rest(_term.c_str() + 1, _term.size() - 2); - stringref parts[8]; + stringref parts[9]; size_t numParts(0); - while (! rest.empty() && (numParts < NELEMS(parts))) { + while (! rest.empty() && ((numParts + 1) < NELEMS(parts))) { size_t pos(rest.find(';')); if (pos != vespalib::string::npos) { parts[numParts++] = rest.substr(0, pos); @@ -382,8 +382,8 @@ QueryTermSimple::QueryTermSimple(const string & term_, SearchTerm type) : rest = stringref(); } } - _valid = (numParts >= 2); - if (numParts > 2) { + _valid = (numParts >= 2) && (numParts < NELEMS(parts)); + if (_valid && numParts > 2) { _rangeLimit = strtol(parts[2].c_str(), NULL, 0); if (numParts > 3) { _valid = (numParts >= 5); diff --git a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp index 92111645761..dfc4793923a 100644 --- a/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/blueprint.cpp @@ -12,8 +12,7 @@ #include <vespa/log/log.h> LOG_SETUP(".queryeval.blueprint"); -namespace search { -namespace queryeval { +namespace search::queryeval { //----------------------------------------------------------------------------- @@ -526,8 +525,7 @@ LeafBlueprint::set_tree_size(uint32_t value) //----------------------------------------------------------------------------- -} // namespace queryeval -} // namespace search +} //----------------------------------------------------------------------------- diff --git a/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h b/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h index 13511c5794d..22a859d2dde 100644 --- a/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h +++ b/searchlib/src/vespa/searchlib/queryeval/document_weight_search_iterator.h @@ -6,8 +6,7 @@ #include <vespa/searchlib/attribute/i_document_weight_attribute.h> #include <vespa/searchlib/fef/termfieldmatchdata.h> -namespace search { -namespace queryeval { +namespace search::queryeval { class DocumentWeightSearchIterator : public SearchIterator { @@ -22,14 +21,10 @@ public: const IDocumentWeightAttribute &attr, IDocumentWeightAttribute::LookupResult dict_entry) : _tfmd(tfmd), - _matchPosition(NULL), + _matchPosition(_tfmd.populate_fixed()), _iterator(attr.create(dict_entry.posting_idx)), _postingInfo(queryeval::MinMaxPostingInfo(dict_entry.min_weight, dict_entry.max_weight)) - { - search::fef::TermFieldMatchDataPosition pos; - _tfmd.appendPosition(pos); - _matchPosition = _tfmd.getPositions(); - } + { } void initRange(uint32_t begin, uint32_t end) override { SearchIterator::initRange(begin, end); _iterator.lower_bound(begin); @@ -57,6 +52,4 @@ public: Trinary is_strict() const override { return Trinary::True; } }; -} // namespace queryeval -} // namespace search - +} diff --git a/searchlib/src/vespa/searchlib/queryeval/fake_result.h b/searchlib/src/vespa/searchlib/queryeval/fake_result.h index 3442e0df944..83d5921e4c7 100644 --- a/searchlib/src/vespa/searchlib/queryeval/fake_result.h +++ b/searchlib/src/vespa/searchlib/queryeval/fake_result.h @@ -7,8 +7,7 @@ #include <vespa/searchlib/common/fslimits.h> #include <vector> -namespace search { -namespace queryeval { +namespace search::queryeval { class FakeResult { @@ -104,6 +103,4 @@ public: std::ostream &operator << (std::ostream &out, const FakeResult &result); -} // namespace queryeval -} // namespace search - +} diff --git a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h index 385412ddcfd..8da81368c72 100644 --- a/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h +++ b/searchlib/src/vespa/searchlib/queryeval/leaf_blueprints.h @@ -7,9 +7,7 @@ #include "fake_result.h" #include "searchable.h" -namespace search { - -namespace queryeval { +namespace search::queryeval { //----------------------------------------------------------------------------- @@ -79,6 +77,4 @@ public: //----------------------------------------------------------------------------- -} // namespace queryeval -} // namespace search - +} diff --git a/searchlib/src/vespa/searchlib/queryeval/posting_info.h b/searchlib/src/vespa/searchlib/queryeval/posting_info.h index ac8636814d6..b7f386475d8 100644 --- a/searchlib/src/vespa/searchlib/queryeval/posting_info.h +++ b/searchlib/src/vespa/searchlib/queryeval/posting_info.h @@ -4,8 +4,7 @@ #include <cstdint> #include <memory> -namespace search { -namespace queryeval { +namespace search::queryeval { /** * Interface for getting global information stored in underlying posting list @@ -42,5 +41,4 @@ public: int32_t getMaxWeight() const { return _maxWeight; } }; -} // namespace queryeval -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp b/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp index e43c192a74d..5195f03b8db 100644 --- a/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/simpleresult.cpp @@ -4,8 +4,7 @@ #include <cassert> #include <ostream> -namespace search { -namespace queryeval { +namespace search::queryeval { SimpleResult & SimpleResult::addHit(uint32_t docid) @@ -74,5 +73,4 @@ operator << (std::ostream &out, const SimpleResult &result) return out; } -} // namespace queryeval -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/queryeval/simpleresult.h b/searchlib/src/vespa/searchlib/queryeval/simpleresult.h index c7755758fa8..30c88bb10c7 100644 --- a/searchlib/src/vespa/searchlib/queryeval/simpleresult.h +++ b/searchlib/src/vespa/searchlib/queryeval/simpleresult.h @@ -5,8 +5,7 @@ #include <vector> #include "searchiterator.h" -namespace search { -namespace queryeval { +namespace search::queryeval { /** * Simple result class containing only document ids. This class will @@ -83,6 +82,4 @@ public: std::ostream &operator << (std::ostream &out, const SimpleResult &result); -} // namespace queryeval -} // namespace search - +} diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp index e73409240fa..789bfc40782 100644 --- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.cpp @@ -11,8 +11,7 @@ LOG_SETUP(".queryeval.parallel_weak_and_search"); using vespalib::make_string; -namespace search { -namespace queryeval { +namespace search::queryeval { typedef ParallelWeakAndSearch::MatchParams MatchParams; typedef ParallelWeakAndSearch::RankParams RankParams; @@ -256,5 +255,4 @@ ParallelWeakAndSearch::create(search::fef::TermFieldMatchData &tfmd, } } -} // namespace queryeval -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h index c29e2f95d23..b561292d4ac 100644 --- a/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h +++ b/searchlib/src/vespa/searchlib/queryeval/wand/parallel_weak_and_search.h @@ -1,15 +1,13 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/searchlib/queryeval/searchiterator.h> #include "wand_parts.h" -#include "parallel_weak_and_search.h" #include "weak_and_heap.h" +#include <vespa/searchlib/queryeval/searchiterator.h> #include <vespa/searchlib/fef/matchdata.h> #include <vespa/searchlib/fef/termfieldmatchdata.h> -namespace search { -namespace queryeval { +namespace search::queryeval { /** * WAND search iterator that uses a shared heap between match threads. @@ -78,8 +76,4 @@ struct ParallelWeakAndSearch : public SearchIterator bool strict); }; -} // namespace queryeval -} // namespace search - - - +} diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h b/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h index 8f696c3b399..9fbf9f7d850 100644 --- a/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h +++ b/searchlib/src/vespa/searchlib/queryeval/wand/wand_parts.h @@ -15,9 +15,7 @@ #include <vespa/searchlib/attribute/i_document_weight_attribute.h> #include <vespa/vespalib/util/stringfmt.h> -namespace search { -namespace queryeval { -namespace wand { +namespace search::queryeval::wand { //----------------------------------------------------------------------------- @@ -659,9 +657,7 @@ public: //----------------------------------------------------------------------------- -} // namespace wand -} // namespace queryeval -} // namespace search +} //----------------------------------------------------------------------------- diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp index 638ea040773..dc84eb45b8a 100644 --- a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.cpp @@ -2,8 +2,7 @@ #include "weak_and_heap.h" -namespace search { -namespace queryeval { +namespace search::queryeval { SharedWeakAndPriorityQueue::SharedWeakAndPriorityQueue(uint32_t scoresToTrack) : WeakAndHeap(scoresToTrack), @@ -36,5 +35,4 @@ SharedWeakAndPriorityQueue::adjust(score_t *begin, score_t *end) } } -} // namespace queryeval -} // namespace search +} diff --git a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h index b9aa19f2ecb..d6105d7e6f2 100644 --- a/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h +++ b/searchlib/src/vespa/searchlib/queryeval/wand/weak_and_heap.h @@ -5,8 +5,7 @@ #include <vespa/vespalib/util/priority_queue.h> #include <vespa/vespalib/util/sync.h> -namespace search { -namespace queryeval { +namespace search::queryeval { /** * An interface used to insert scores into an underlying heap (or similar data structure) @@ -63,6 +62,4 @@ public: void adjust(score_t *begin, score_t *end) override; }; -} // namespace queryeval -} // namespace search - +} diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp index 97725a00536..aae7c60bd80 100644 --- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp @@ -9,8 +9,7 @@ using search::fef::TermFieldMatchData; using vespalib::ObjectVisitor; -namespace search { -namespace queryeval { +namespace search::queryeval { template <typename HEAP, typename IteratorPack> class WeightedSetTermSearchImpl : public WeightedSetTermSearch @@ -164,5 +163,4 @@ WeightedSetTermSearch::create(search::fef::TermFieldMatchData &tmd, //----------------------------------------------------------------------------- -} // namespace search::queryeval -} // namespace search +} |