do not check the string longer than 10.

This commit is contained in:
Tokuhiro Matsuno 2009-07-02 16:40:41 +09:00
parent e92e99c4d1
commit 580fbe77e9

View File

@ -131,9 +131,10 @@ static void _msgpack_pack_sv(enc_t *enc, SV* val) {
if (SvPOKp(val)) { if (SvPOKp(val)) {
STRLEN len; STRLEN len;
char * cval = SvPV(val, len); char * cval = SvPV(val, len);
const int U32_STRLEN = 10; /* length(0xFFFFFFFF) */
SV* pref_int = get_sv("Data::MessagePack::PreferInteger", 0); SV* pref_int = get_sv("Data::MessagePack::PreferInteger", 0);
if (pref_int && SvTRUE(pref_int) && looks_like_int(cval, len) && SvUV(val) < U32_MAX) { if (pref_int && SvTRUE(pref_int) && len <= U32_STRLEN && looks_like_int(cval, len) && SvUV(val) < U32_MAX) {
PACK_WRAPPER(uint32)(enc, SvUV(val)); PACK_WRAPPER(uint32)(enc, SvUV(val));
return; return;
} }