Skip to content

Commit 4bd3b6e

Browse files
gireeshpunathiltargos
authored andcommitted
src: refactor crypto code with RAII cleanup
use more idiomatic expressions with RAII primitives, instead of old style goto PR-URL: #23014 Reviewed-By: Daniel Bevenius <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Sakthipriyan Vairamani <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Tobias Nießen <[email protected]> Reviewed-By: Joyee Cheung <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]>
1 parent cbcf5f8 commit 4bd3b6e

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

‎src/node_crypto_clienthello.cc‎

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ bool ClientHelloParser::ParseRecordHeader(const uint8_t* data, size_t avail){
7474

7575
voidClientHelloParser::ParseHeader(constuint8_t* data, size_t avail){
7676
ClientHello hello;
77+
bool failed = true;
78+
79+
OnScopeLeave cleanup([&](){
80+
if (failed)
81+
End();
82+
});
7783

7884
// >= 5 + frame size bytes for frame parsing
7985
if (body_offset_ + frame_len_ > avail)
@@ -88,23 +94,23 @@ void ClientHelloParser::ParseHeader(const uint8_t* data, size_t avail){
8894
if (data[body_offset_ + 4] != 0x03 ||
8995
data[body_offset_ + 5] < 0x01 ||
9096
data[body_offset_ + 5] > 0x03){
91-
goto fail;
97+
return;
9298
}
9399

94100
if (data[body_offset_] == kClientHello){
95101
if (state_ == kTLSHeader){
96102
if (!ParseTLSClientHello(data, avail))
97-
goto fail;
103+
return;
98104
} else{
99105
// We couldn't get here, but whatever
100-
goto fail;
106+
return;
101107
}
102108

103109
// Check if we overflowed (do not reply with any private data)
104110
if (session_id_ == nullptr ||
105111
session_size_ > 32 ||
106112
session_id_ + session_size_ > data + avail){
107-
goto fail;
113+
return;
108114
}
109115
}
110116

@@ -116,10 +122,8 @@ void ClientHelloParser::ParseHeader(const uint8_t* data, size_t avail){
116122
hello.servername_ = servername_;
117123
hello.servername_size_ = static_cast<uint8_t>(servername_size_);
118124
onhello_cb_(cb_arg_, hello);
125+
failed = false;
119126
return;
120-
121-
fail:
122-
End();
123127
}
124128

125129

0 commit comments

Comments
(0)