diff options
author | Lukas Larsson <[email protected]> | 2017-05-23 15:06:04 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2017-05-23 15:06:04 +0200 |
commit | 2fa8ade78ef987ad1f3ab42bed691ebfcf29d29d (patch) | |
tree | 29a61181f6c6231235608f99c0651cffbbf34e96 | |
parent | 24481c66a615c62b22d664e141b581b979af0eaf (diff) | |
download | otp-2fa8ade78ef987ad1f3ab42bed691ebfcf29d29d.tar.gz otp-2fa8ade78ef987ad1f3ab42bed691ebfcf29d29d.tar.bz2 otp-2fa8ade78ef987ad1f3ab42bed691ebfcf29d29d.zip |
kernel: Add early reject of invalid node names
-rw-r--r-- | lib/kernel/src/dist_util.erl | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/kernel/src/dist_util.erl b/lib/kernel/src/dist_util.erl index 1c326afca8..b3507e5d13 100644 --- a/lib/kernel/src/dist_util.erl +++ b/lib/kernel/src/dist_util.erl @@ -572,12 +572,25 @@ recv_name(#hs_data{socket = Socket, f_recv = Recv}) -> ?shutdown(no_node) end. -get_name([$n,VersionA, VersionB, Flag1, Flag2, Flag3, Flag4 | OtherNode]) -> - {?u32(Flag1, Flag2, Flag3, Flag4), list_to_atom(OtherNode), - ?u16(VersionA,VersionB)}; +get_name([$n,VersionA, VersionB, Flag1, Flag2, Flag3, Flag4 | OtherNode] = Data) -> + case is_valid_name(OtherNode) of + true -> + {?u32(Flag1, Flag2, Flag3, Flag4), list_to_atom(OtherNode), + ?u16(VersionA,VersionB)}; + false -> + ?shutdown(Data) + end; get_name(Data) -> ?shutdown(Data). +is_valid_name(OtherNodeName) -> + case string:lexemes(OtherNodeName,"@") of + [_OtherNodeName,_OtherNodeHost] -> + true; + _else -> + false + end. + publish_type(Flags) -> case Flags band ?DFLAG_PUBLISHED of 0 -> |