~ubuntu-branches/ubuntu/maverick/krb5/maverick

« back to all changes in this revision

Viewing changes to src/util/t_template.pm

  • Committer: Bazaar Package Importer
  • Author(s): Sam Hartman
  • Date: 2009-05-07 16:16:34 UTC
  • mfrom: (13.1.7 sid)
  • Revision ID: james.westby@ubuntu.com-20090507161634-xqyk0s9na0le4flj
Tags: 1.7dfsg~beta1-4
When  decrypting the TGS response fails with the subkey, try with the
session key to work around Heimdal bug, Closes: #527353 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package t_template;
 
2
 
 
3
use strict;
 
4
use vars qw(@ISA @EXPORT_OK);
 
5
 
 
6
@ISA=();
 
7
@EXPORT_OK= qw(init setparm output);
 
8
 
 
9
sub init { # (\@parms, \%defaults, \@template)
 
10
    my ($self, $parms, $defs, $templatelines) = @_;
 
11
    $self->{parms} = { };
 
12
    $self->{values} = { };
 
13
    my $key;
 
14
    foreach $key (@$parms) {
 
15
        $self->{parms}{$key} = 1;
 
16
    }
 
17
    foreach $key (keys %$defs) {
 
18
        $self->{values}{$key} = ${$defs}{$key};
 
19
    }
 
20
    if (defined($templatelines)) {
 
21
        $self->{template} = join "", @$templatelines;
 
22
    }
 
23
}
 
24
 
 
25
sub validateparm { # (parmname)
 
26
    no strict 'refs';
 
27
    my ($self, $parmname) = @_;
 
28
    if (!defined($self->{parms}{$parmname})) {
 
29
        die "unknown parameter $parmname";
 
30
    }
 
31
}
 
32
 
 
33
sub setparm { # (parm, value)
 
34
    my ($self, $parm, $value) = @_;
 
35
    $self->validateparm($parm);
 
36
    $self->{values}{$parm} = $value;
 
37
}
 
38
 
 
39
sub substitute { # (text)
 
40
    my ($self, $text) = @_;
 
41
    my ($p);
 
42
 
 
43
    # Do substitutions.
 
44
    foreach $p (keys %{$self->{parms}}) {
 
45
        if (!defined $self->{values}{$p}) {
 
46
            die "$0: No value supplied for parameter $p\n";
 
47
        }
 
48
        # XXX More careful quoting of supplied value!
 
49
        $text =~ s|<$p>|$self->{values}{$p}|g;
 
50
    }
 
51
    return $text;
 
52
}
 
53
 
 
54
sub output { # (fh)
 
55
    my ($self, $fh) = @_;
 
56
    print $fh "/* start of ", ref($self), " template */\n";
 
57
    print $fh $self->substitute($self->{template});
 
58
    print $fh "/* end of ", ref($self), " template */\n";
 
59
}
 
60
 
 
61
1;