From 69aabf18f7ce2377e411bddb8fb2297e2254b280 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Wed, 17 Oct 2007 13:45:27 +0000 Subject: Fix to headers exchanges bind: need to check the match value is present before dereferencing Added tests for this. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@585503 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/broker/HeadersExchange.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cpp/src/qpid') diff --git a/cpp/src/qpid/broker/HeadersExchange.cpp b/cpp/src/qpid/broker/HeadersExchange.cpp index 55cdb73ac1..215a002517 100644 --- a/cpp/src/qpid/broker/HeadersExchange.cpp +++ b/cpp/src/qpid/broker/HeadersExchange.cpp @@ -46,7 +46,7 @@ HeadersExchange::HeadersExchange(const std::string& _name, bool _durable, const bool HeadersExchange::bind(Queue::shared_ptr queue, const string& /*routingKey*/, const FieldTable* args){ RWlock::ScopedWlock locker(lock); FieldTable::ValuePtr what = args->get(x_match); - if (*what != all && *what != any) { + if (!what || (*what != all && *what != any)) { THROW_QPID_ERROR(PROTOCOL_ERROR, "Invalid x-match value binding to headers exchange."); } Binding binding(*args, queue); -- cgit v1.2.1