[Pkg-puppet-devel] [facter] 04/46: (#14522) Force /proc/self/status encoding to valid UTF-8 (try 2)

Stig Sandbeck Mathisen ssm at debian.org
Sun Sep 1 10:47:26 UTC 2013


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

ssm pushed a commit to branch master
in repository facter.

commit 819c8dbca15c2ea0a4056aaf246c35b1b7f3517f
Author: Jeff McCune <jeff at puppetlabs.com>
Date:   Tue Apr 16 11:27:30 2013 -0400

    (#14522) Force /proc/self/status encoding to valid UTF-8 (try 2)
    
    Without this patch the previous attempt to fix issue 14522 is
    insufficient because the String#encode method is a no-op when the source
    and destination encodings are the same encoding, even if there are
    invalid byte sequences.
    
    This is a problem because we're still getting unhandled `invalid byte
    sequence in UTF-8` errors running the specs.
    
    This patch addresses the problem by changing encoding from UTF-8 to
    UTF-16, replacing all invalid byte sequences with the default unicode
    string of "uFFFD"  We then convert back to UTF-8 to guarantee only valid
    byte sequences remain.
---
 lib/facter/util/virtual.rb |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/facter/util/virtual.rb b/lib/facter/util/virtual.rb
index af192da..a2457f5 100644
--- a/lib/facter/util/virtual.rb
+++ b/lib/facter/util/virtual.rb
@@ -63,7 +63,8 @@ module Facter::Util::Virtual
     return false unless FileTest.exists?("/proc/self/status")
     txt = File.open("/proc/self/status", "rb").read
     if txt.respond_to?(:encode!)
-      txt.encode!('UTF-8', 'UTF-8', :invalid => :replace)
+      txt.encode!('UTF-16', 'UTF-8', :invalid => :replace)
+      txt.encode!('UTF-8', 'UTF-16')
     end
     return true if txt =~ /^(s_context|VxID):[[:blank:]]*[0-9]/
     return false

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-puppet/facter.git



More information about the Pkg-puppet-devel mailing list