From 18000a213f85bf14c4446059ebe557ae115d62c6 Mon Sep 17 00:00:00 2001 From: Simon Giesecke Date: Mon, 28 May 2018 16:19:46 +0200 Subject: [PATCH] Problem: magic numbers in mechanism_base.cpp Solution: extract constants --- src/mechanism_base.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/mechanism_base.cpp b/src/mechanism_base.cpp index ff933674..325af77b 100644 --- a/src/mechanism_base.cpp +++ b/src/mechanism_base.cpp @@ -55,12 +55,24 @@ int zmq::mechanism_base_t::check_basic_command_structure (msg_t *msg_) void zmq::mechanism_base_t::handle_error_reason (const char *error_reason_, size_t error_reason_len_) { - if (error_reason_len_ == 3 && error_reason_[1] == '0' - && error_reason_[2] == '0' && error_reason_[0] >= '3' - && error_reason_[0] <= '5') { - // it is a ZAP status code, so emit an authentication failure event + const size_t status_code_len = 3; + const char zero_digit = '0'; + const size_t significant_digit_index = 0; + const size_t first_zero_digit_index = 1; + const size_t second_zero_digit_index = 2; + const int factor = 100; + if (error_reason_len_ == status_code_len + && error_reason_[first_zero_digit_index] == zero_digit + && error_reason_[second_zero_digit_index] == zero_digit + && error_reason_[significant_digit_index] >= '3' + && error_reason_[significant_digit_index] <= '5') { + // it is a ZAP error status code (300, 400 or 500), so emit an authentication failure event session->get_socket ()->event_handshake_failed_auth ( - session->get_endpoint (), (error_reason_[0] - '0') * 100); + session->get_endpoint (), + (error_reason_[significant_digit_index] - zero_digit) * factor); + } else { + // this is a violation of the ZAP protocol + // TODO zmq_assert in this case? } }