From: Amos Jeffries Date: Tue, 17 Jan 2017 04:31:41 +0000 (+1300) Subject: Initialize options= in all cases X-Git-Tag: M-staged-PR71~284^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d7208dbcade1491d905467cc36f04513bd660404;p=thirdparty%2Fsquid.git Initialize options= in all cases Since we now have long and ptr in different builds we cannot rely on the default constructor always being correct. Adjust the parseOptions() method to handle empty options= silently for OpenSSL buidls (like GnutTLS builds did already) and use it to initialize the parsedOptions member. --- diff --git a/src/security/PeerOptions.cc b/src/security/PeerOptions.cc index 844aa16f8d..a7cd94db5c 100644 --- a/src/security/PeerOptions.cc +++ b/src/security/PeerOptions.cc @@ -21,6 +21,12 @@ Security::PeerOptions Security::ProxyOutgoingConfig; +Security::PeerOptions::PeerOptions() +{ + // init options consistent with an empty sslOptions + parseOptions(); +} + Security::PeerOptions::PeerOptions(const Security::PeerOptions &p) : sslOptions(p.sslOptions), caDir(p.caDir), @@ -472,7 +478,7 @@ Security::PeerOptions::parseOptions() ::Parser::Tokenizer tok(sslOptions); long op = 0; - do { + while (!tok.atEnd()) { enum { MODE_ADD, MODE_REMOVE } mode; @@ -525,7 +531,7 @@ Security::PeerOptions::parseOptions() fatalf("Unknown TLS option '" SQUIDSBUFPH "'", SQUIDSBUFPRINT(tok.remaining())); } - } while (!tok.atEnd()); + } #if SSL_OP_NO_SSLv2 // compliance with RFC 6176: Prohibiting Secure Sockets Layer (SSL) Version 2.0 diff --git a/src/security/PeerOptions.h b/src/security/PeerOptions.h index 5c6b89f354..d24bd62acf 100644 --- a/src/security/PeerOptions.h +++ b/src/security/PeerOptions.h @@ -22,7 +22,7 @@ namespace Security class PeerOptions { public: - PeerOptions() = default; + PeerOptions(); PeerOptions(const PeerOptions &); PeerOptions &operator =(const PeerOptions &); virtual ~PeerOptions() {}