[libyaml-perl] 01/02: Control blessing of loaded objects through an environment variable

Christoph Biedl debian.axhn at manchmal.in-ulm.de
Fri May 19 19:09:38 UTC 2017


This is an automated email from the git hooks/post-receive script.

cbiedl-guest pushed a commit to branch yaml-unsafe
in repository libyaml-perl.

commit a401004cd67b079d4a942c0ada9faac68de9e406
Author: Christoph Biedl <debian.axhn at manchmal.in-ulm.de>
Date:   Fri May 19 15:25:35 2017 +0000

    Control blessing of loaded objects through an environment variable
---
 debian/patches/control-blessing.patch | 65 +++++++++++++++++++++++++++++++++++
 debian/patches/series                 |  1 +
 debian/rules                          |  2 ++
 3 files changed, 68 insertions(+)

diff --git a/debian/patches/control-blessing.patch b/debian/patches/control-blessing.patch
new file mode 100644
index 0000000..96b329d
--- /dev/null
+++ b/debian/patches/control-blessing.patch
@@ -0,0 +1,65 @@
+--- a/lib/YAML/Loader.pm
++++ b/lib/YAML/Loader.pm
+@@ -190,7 +190,7 @@
+                 undef $node;
+                 $node = \$copy;
+             }
+-            CORE::bless $node, $class;
++            CORE::bless $node, $class if $ENV{'PERL_USE_UNSAFE_YAML'};
+         }
+         else {
+             $node = $self->_parse_explicit($node, $explicit);
+@@ -270,7 +270,7 @@
+         }
+ 
+         if ( length($class) ) {
+-            CORE::bless($node, $class);
++            CORE::bless($node, $class) if ($ENV{'PERL_USE_UNSAFE_YAML'});
+         }
+ 
+         return $node;
+@@ -295,7 +295,7 @@
+             require YAML::Node;
+             return $class->yaml_load(YAML::Node->new($node, $explicit));
+         }
+-        else {
++        elsif ($ENV{'PERL_USE_UNSAFE_YAML'}) {
+             if (ref $node) {
+                 return CORE::bless $node, $class;
+             }
+@@ -303,6 +303,9 @@
+                 return CORE::bless \$node, $class;
+             }
+         }
++        else {
++            return $node;
++        }
+     }
+     elsif (ref $node) {
+         require YAML::Node;
+--- a/lib/YAML/Types.pm
++++ b/lib/YAML/Types.pm
+@@ -166,12 +166,12 @@
+             return sub {};
+         }
+         else {
+-            CORE::bless $code, $class if $class;
++            CORE::bless $code, $class if $class && $ENV{'PERL_USE_UNSAFE_YAML'};
+             return $code;
+         }
+     }
+     else {
+-        return CORE::bless sub {}, $class if $class;
++        return CORE::bless sub {}, $class if $class && $ENV{'PERL_USE_UNSAFE_YAML'};
+         return sub {};
+     }
+ }
+@@ -228,7 +228,7 @@
+     $flags =~ s/^\^//;
+     my $sub = _QR_TYPES->{$flags} || sub { qr{$_[0]} };
+     my $qr = &$sub($re);
+-    bless $qr, $class if length $class;
++    bless $qr, $class if length $class && $ENV{'PERL_USE_UNSAFE_YAML'};
+     return $qr;
+ }
+ 
diff --git a/debian/patches/series b/debian/patches/series
index c130d18..bce7195 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 ysh-location.patch
+control-blessing.patch
diff --git a/debian/rules b/debian/rules
index 2d33f6a..63558e3 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,4 +1,6 @@
 #!/usr/bin/make -f
 
+export PERL_USE_UNSAFE_YAML=1
+
 %:
 	dh $@

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libyaml-perl.git



More information about the Pkg-perl-cvs-commits mailing list