summaryrefslogtreecommitdiff
path: root/ext/MIME/Base64/t/bad-sv.t
blob: 3505b80ce121f46c16151928188a394f44fc88e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!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");