Skip to content

Commit 37c30a5

Browse files
author
Yuki Ito
committed
Validate bin and string size
1 parent 6434e7a commit 37c30a5

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

src/msgpack_packer.erl

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,10 @@ pack_raw(Bin) ->
152152
<< 2#101:3, Len:5, Bin/binary >>;
153153
Len when Len < 16#10000 -> % 65536
154154
<< 16#DA:8, Len:16/big-unsigned-integer-unit:1, Bin/binary >>;
155-
Len ->
156-
<< 16#DB:8, Len:32/big-unsigned-integer-unit:1, Bin/binary >>
155+
Len when Len < 16#100000000 ->
156+
<< 16#DB:8, Len:32/big-unsigned-integer-unit:1, Bin/binary >>;
157+
_ ->
158+
{error, {badarg, Bin}}
157159
end.
158160

159161
-spec pack_raw2(binary()) -> binary().
@@ -164,8 +166,10 @@ pack_raw2(Bin) ->
164166
<< 16#C4:8, Len:8/big-unsigned-integer-unit:1, Bin/binary>>;
165167
Len when Len < 16#10000 -> % 65536
166168
<< 16#C5:8, Len:16/big-unsigned-integer-unit:1, Bin/binary >>;
167-
Len ->
168-
<< 16#C6:8, Len:32/big-unsigned-integer-unit:1, Bin/binary >>
169+
Len when Len < 16#100000000 ->
170+
<< 16#C6:8, Len:32/big-unsigned-integer-unit:1, Bin/binary >>;
171+
_ ->
172+
{error, {badarg, Bin}}
169173
end.
170174

171175
%% @doc String MAY be unicode. Or may be EUC-JP, SJIS, UTF-1024 or anything.
@@ -184,8 +188,10 @@ pack_string(String, _Opt) ->
184188
<< 16#D9:8, Len:8/big-unsigned-integer-unit:1, Bin/binary >>;
185189
Len when Len < 16#10000 -> % 65536
186190
<< 16#DA:8, Len:16/big-unsigned-integer-unit:1, Bin/binary >>;
187-
Len ->
188-
<< 16#DB:8, Len:32/big-unsigned-integer-unit:1, Bin/binary >>
191+
Len when Len < 16#100000000 ->
192+
<< 16#DB:8, Len:32/big-unsigned-integer-unit:1, Bin/binary >>;
193+
_ ->
194+
{error, {badarg, String}}
189195
end
190196
end.
191197

0 commit comments

Comments
 (0)