Skip to content

Commit 23fd44f

Browse files
committed
Do not build binary until needed
1 parent 9df2346 commit 23fd44f

1 file changed

Lines changed: 16 additions & 16 deletions

File tree

lib/kernel/src/inet_dns_tsig.erl

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -273,22 +273,22 @@ do_verify(Pkt, _Response, TS = #tsig_state{ alg = {_Alg,AlgSize} }, TSigRR) ->
273273
andalso
274274
MACSize =< AlgSize,
275275
MACValid orelse throw(formerr),
276-
PktS = iolist_to_binary([
277-
<<(TS#tsig_state.id):16>>,
278-
binary:part(Pkt, {2,8}),
279-
begin
280-
<<ARC:16>> = binary:part(Pkt, {10,2}),
281-
<<(ARC - 1):16>>
276+
MACCalc =
277+
if
278+
element(1, TS#tsig_state.mac) == ?MODULE ->
279+
PktS =
280+
iolist_to_binary(
281+
[binary_part(Pkt, 0, 10),
282+
begin
283+
<<ARC:16>> = binary_part(Pkt, 10, 2),
284+
<<(ARC - 1):16>>
285+
end,
286+
binary_part(Pkt, 12, Offset-12)]),
287+
mac(PktS, TS, Error, NowSigned, OtherData);
288+
%% RFC8945, section 5.3.1: TSIG on TCP Connections
289+
true ->
290+
mac(TS, Error, NowSigned, OtherData)
282291
end,
283-
binary:part(Pkt, {12,Offset - 12})
284-
]),
285-
MACCalc = if
286-
element(1, TS#tsig_state.mac) == ?MODULE ->
287-
mac(PktS, TS, Error, NowSigned, OtherData);
288-
%% RFC8945, section 5.3.1: TSIG on TCP Connections
289-
true ->
290-
mac(TS, Error, NowSigned, OtherData)
291-
end,
292292
MACEq =
293293
MACSize == byte_size(MACCalc)
294294
andalso
@@ -333,7 +333,7 @@ macN({?MODULE,MAC}, #tsig_state{ mac = {crypto,MACState} }) ->
333333
macN(Pkt, TS = #tsig_state{ mac = {crypto,MACState} }) ->
334334
{crypto,crypto:mac_update(MACState, [
335335
<<(TS#tsig_state.id):16>>,
336-
binary:part(Pkt, {2,byte_size(Pkt) - 2})
336+
binary_part(Pkt, 2, byte_size(Pkt)-2)
337337
])}.
338338

339339
%% RFC8945, section 5.3.2: Generation of TSIG on Error Returns

0 commit comments

Comments
 (0)