From 23a7137e6a6d7f2910fef2dde305f45f83416194 Mon Sep 17 00:00:00 2001 From: tokuhirom Date: Tue, 31 Aug 2010 23:42:32 +0900 Subject: [PATCH] Perl: better argument validation(patch from dankogai) --- perl/pack.c | 4 ++-- perl/t/08_cycle.t | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/perl/pack.c b/perl/pack.c index af6669cd..93b2e2f4 100644 --- a/perl/pack.c +++ b/perl/pack.c @@ -151,7 +151,7 @@ static int try_int(enc_t* enc, const char *p, size_t len) { static void _msgpack_pack_rv(enc_t *enc, SV* sv, int depth); static void _msgpack_pack_sv(enc_t *enc, SV* sv, int depth) { - if (!depth) Perl_croak(aTHX_ ERR_NESTING_EXCEEDED); + if (depth <= 0) Perl_croak(aTHX_ ERR_NESTING_EXCEEDED); SvGETMAGIC(sv); if (sv==NULL) { @@ -187,7 +187,7 @@ static void _msgpack_pack_sv(enc_t *enc, SV* sv, int depth) { static void _msgpack_pack_rv(enc_t *enc, SV* sv, int depth) { svtype svt; - if (!depth) Perl_croak(aTHX_ ERR_NESTING_EXCEEDED); + if (depth <= 0) Perl_croak(aTHX_ ERR_NESTING_EXCEEDED); SvGETMAGIC(sv); svt = SvTYPE(sv); diff --git a/perl/t/08_cycle.t b/perl/t/08_cycle.t index 55d8427a..2bd66c10 100644 --- a/perl/t/08_cycle.t +++ b/perl/t/08_cycle.t @@ -2,7 +2,7 @@ use t::Util; use Test::More; use Data::MessagePack; -plan tests => 5; +plan tests => 6; my $aref = [0]; $aref->[1] = $aref; @@ -23,3 +23,6 @@ ok !$@; eval { Data::MessagePack->pack($aref, 2) }; ok $@, $@; + +eval { Data::MessagePack->pack($aref, -1) }; +ok $@, $@;