ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/perl/confirm-paste
(Generate patch)

Comparing rxvt-unicode/src/perl/confirm-paste (file contents):
Revision 1.8 by root, Thu Feb 6 23:41:15 2020 UTC vs.
Revision 1.9 by root, Fri Jun 18 12:37:43 2021 UTC

1#! perl 1#! perl
2 2
3=head1 NAME 3=head1 NAME
4 4
5confirm-paste - ask for confirmation before pasting multiline text 5confirm-paste - ask for confirmation before pasting cntrol characters
6 6
7=head1 DESCRIPTION 7=head1 DESCRIPTION
8 8
9Displays a confirmation dialog when a paste containing at least a full 9Displays a confirmation dialog when a paste containing control characters
10line is detected. 10is detected.
11
12This is mostly meant as a defense-in-depth mechanism to protect against
13the common webbrowser bug of you selecting some text but the browser
14pasting a completely different text, which has some attack potential.
15
16It can also be useful to prevent you from accidentally pasting large
17amounts of text.
11 18
12=cut 19=cut
13 20
14sub msg { 21sub msg {
15 my ($self, $msg) = @_; 22 my ($self, $msg) = @_;
19} 26}
20 27
21sub on_tt_paste { 28sub on_tt_paste {
22 my ($self, $str) = @_; 29 my ($self, $str) = @_;
23 30
24 my $count = ($str =~ tr/[\x00-\x1f\x80-\x9f]//); 31 my $count = ($str =~ tr/[\x00-\x1f\x80-\x9f]//)
25 32 or return;
26 return unless $count;
27 33
28 $self->{paste} = \$str; 34 $self->{paste} = \$str;
29 $self->msg ("Pasting $count control characters, continue? (y/n)"); 35 $self->msg ("Pasting $count control characters, continue? (y/n)");
36
30 my $preview = substr $self->locale_decode ($str), 0, $self->ncol; 37 my $preview = substr $self->locale_decode ($str), 0, $self->ncol;
31 $preview =~ s/\n/\\n/g; 38 $preview =~ s/\n/\\n/g;
32 $preview =~ s/([\x00-\x1f\x80-\x9f])/sprintf "\\x%02x", ord $1/ge; 39 $preview =~ s/([\x00-\x1f\x80-\x9f])/sprintf "\\x%02x", ord $1/ge;
40
33 $self->{overlay}->set (0, 1, $self->special_encode ($preview)); 41 $self->{overlay}->set (0, 1, $self->special_encode ($preview));
34 $self->enable (key_press => \&key_press); 42 $self->enable (key_press => \&key_press);
35 43
36 1 44 1
37} 45}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines