bad-sv.t   [plain text]


#!perl -w

BEGIN {
    eval {
	require Perl::API;
    };
    if ($@) {
	print "1..0 # skipped: Perl::API needed for this test\n";
	print $@;
	exit;
    }
}

use strict;
use Test qw(plan ok);
use Perl::API qw(SvCUR SvCUR_set SvLEN);
use MIME::Base64 qw(encode_base64 decode_base64);
use MIME::QuotedPrint qw(encode_qp decode_qp);

plan tests => 6;

my $a = "abc";

ok(SvCUR($a), 3);
ok(SvLEN($a), 4);

# Make sure that encode_base64 does not look beyond SvCUR().
# This was fixed in v2.21.  Valgrind would also show some
# illegal reads on this.

SvCUR_set($a, 1);
ok(encode_base64($a), "YQ==\n");

SvCUR_set($a, 4);
ok(encode_base64($a), "YWJjAA==\n");

ok(encode_qp($a), "abc=00");

$a = "ab\n";

SvCUR_set($a, 2);
ok(encode_qp($a), "ab");