1*4882a593SmuzhiyunFrom 362be06fc16a5ad0f9e9aa90cc763c5242e8e35c Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com> 3*4882a593SmuzhiyunDate: Sat, 9 Feb 2019 12:41:45 +0100 4*4882a593SmuzhiyunSubject: [PATCH] ssl_manager.cpp: fix build with gcc 7 and -fpermissive 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunChange prototype of DERToken::parse function from 7*4882a593Smuzhiyunparse(ConstDataRange cdr, size_t* outLength); 8*4882a593Smuzhiyunto parse(ConstDataRange cdr, uint64_t* outLength); 9*4882a593Smuzhiyun 10*4882a593SmuzhiyunOtherwise, we got the following error: 11*4882a593Smuzhiyun 12*4882a593Smuzhiyunsrc/mongo/util/net/ssl_manager.cpp: In static member function 'static mongo::StatusWith<mongo::{anonymous}::DERToken> mongo::{anonymous}::DERToken::parse(mongo::ConstDataRange, size_t*)': 13*4882a593Smuzhiyunsrc/mongo/util/net/ssl_manager.cpp:575:79: error: invalid conversion from 'size_t* {aka unsigned int*}' to 'long unsigned int*' [-fpermissive] 14*4882a593Smuzhiyun if (mongoUnsignedAddOverflow64(tagAndLengthByteCount, derLength, outLength) || 15*4882a593Smuzhiyun 16*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> 17*4882a593Smuzhiyun[Upstream status: https://github.com/mongodb/mongo/pull/1296] 18*4882a593Smuzhiyun--- 19*4882a593Smuzhiyun src/mongo/util/net/ssl_manager.cpp | 6 +++--- 20*4882a593Smuzhiyun 1 file changed, 3 insertions(+), 3 deletions(-) 21*4882a593Smuzhiyun 22*4882a593Smuzhiyundiff --git a/src/mongo/util/net/ssl_manager.cpp b/src/mongo/util/net/ssl_manager.cpp 23*4882a593Smuzhiyunindex b93ebe84a4..3511eb5d99 100644 24*4882a593Smuzhiyun--- a/src/mongo/util/net/ssl_manager.cpp 25*4882a593Smuzhiyun+++ b/src/mongo/util/net/ssl_manager.cpp 26*4882a593Smuzhiyun@@ -782,7 +782,7 @@ public: 27*4882a593Smuzhiyun * 28*4882a593Smuzhiyun * Returns a DERToken which consists of the (tag, length, value) tuple. 29*4882a593Smuzhiyun */ 30*4882a593Smuzhiyun- static StatusWith<DERToken> parse(ConstDataRange cdr, size_t* outLength); 31*4882a593Smuzhiyun+ static StatusWith<DERToken> parse(ConstDataRange cdr, uint64_t* outLength); 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun private: 34*4882a593Smuzhiyun DERType _type{DERType::EndOfContent}; 35*4882a593Smuzhiyun@@ -799,7 +799,7 @@ struct DataType::Handler<DERToken> { 36*4882a593Smuzhiyun size_t length, 37*4882a593Smuzhiyun size_t* advanced, 38*4882a593Smuzhiyun std::ptrdiff_t debug_offset) { 39*4882a593Smuzhiyun- size_t outLength; 40*4882a593Smuzhiyun+ uint64_t outLength; 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun auto swPair = DERToken::parse(ConstDataRange(ptr, length), &outLength); 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun@@ -844,7 +844,7 @@ StatusWith<std::string> readDERString(ConstDataRangeCursor& cdc) { 45*4882a593Smuzhiyun } 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun-StatusWith<DERToken> DERToken::parse(ConstDataRange cdr, size_t* outLength) { 49*4882a593Smuzhiyun+StatusWith<DERToken> DERToken::parse(ConstDataRange cdr, uint64_t* outLength) { 50*4882a593Smuzhiyun const size_t kTagLength = 1; 51*4882a593Smuzhiyun const size_t kTagLengthAndInitialLengthByteLength = kTagLength + 1; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun-- 54*4882a593Smuzhiyun2.14.1 55*4882a593Smuzhiyun 56