: irb
irb(main):001:0> require 'win32/dir'
=> true
irb(main):002:0> Dir::COMMON_APPDATA
=> "C:\\ProgramData"
irb(main):003:0> Dir::COMMON_APPDATA.encoding
=> #<Encoding:UTF-16LE>
irb(main):004:0> Dir::COMMON_APPDATA.bytes.to_a
=> [67, 0, 58, 0, 92, 0, 80, 0, 114, 0, 111, 0, 103, 0, 114, 0, 97, 0, 109,
0, 68, 0, 97, 0, 116, 0, 97, 0]



On Mon, Oct 15, 2012 at 12:53 PM, Andy Parker <[email protected]> wrote:

> Hi Edward,
>
> what is the output in irb of:
>
>   require 'win32/dir'
>   Dir::COMMON_APPDATA.encoding
>   Dir::COMMON_APPDATA.bytes.to_a
>
> I'm interested where this null byte is in that innocuous looking string.
>
> On Sun, Oct 14, 2012 at 6:36 AM, Edward Sumerfield
> <[email protected]> wrote:
> > The problem starts with requiring rspec-puppet but ends up in the puppet
> 3.0
> > run_mode trying to determine Windows APPDATA pathing. The
> > Dir::COMMON_APPDATA constant from win32-dir appears to be unicode which
> > blows on the File.join call in run_mode line 67
> >
> > : irb
> > irb(main):001:0> require "rspec-puppet"
> > Failed to load feature test for root: uninitialized constant
> > Windows::Synchronize
> > ArgumentError: string contains null byte
> >         from
> >
> C:/ruby193/lib/ruby/gems/1.9.1/gems/puppet-3.0.0/lib/puppet/util/run_mode.rb:67:in
> > `join'
> >         from
> >
> C:/ruby193/lib/ruby/gems/1.9.1/gems/puppet-3.0.0/lib/puppet/util/run_mode.rb:67:in
> > `conf_dir'
> >         from
> >
> C:/ruby193/lib/ruby/gems/1.9.1/gems/puppet-3.0.0/lib/puppet/settings.rb:495:in
> > `user_config_file'
> >         from
> >
> C:/ruby193/lib/ruby/gems/1.9.1/gems/puppet-3.0.0/lib/puppet/settings.rb:1234:in
> > `which_configuration_file'
> >         from
> >
> C:/ruby193/lib/ruby/gems/1.9.1/gems/puppet-3.0.0/lib/puppet/settings.rb:475:in
> > `parse_config_files'
> >         from
> >
> C:/ruby193/lib/ruby/gems/1.9.1/gems/puppet-3.0.0/lib/puppet/settings.rb:147:in
> > `initialize_global_settings'
> >
> >         from
> > C:/ruby193/lib/ruby/gems/1.9.1/gems/puppet-3.0.0/lib/puppet.rb:135:in
> > `do_initialize_settings_for_run_mode'
> >
> >         from
> > C:/ruby193/lib/ruby/gems/1.9.1/gems/puppet-3.0.0/lib/puppet.rb:123:in
> > `initialize_settings'
> >         from
> >
> C:/ruby193/lib/ruby/gems/1.9.1/gems/rspec-puppet-0.1.5/lib/rspec-puppet.rb:10:in
> > `<top (required)>'
> >         from
> > C:/ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in
> > `require'
> >         from
> > C:/ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in
> `rescue
> > in require'
> >         from
> > C:/ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in
> > `require'
> >         from (irb):1
> >         from C:/ruby193/bin/irb:12:in `<main>'
> >
> > Reproducing the specific line in question in irb like this:
> >
> > : irb
> > irb(main):002:0> require 'win32/dir'
> > => true
> > irb(main):003:0> Dir::COMMON_APPDATA
> > => "C:\\ProgramData"
> > irb(main):006:0> File.join [Dir::COMMON_APPDATA, "PuppetLabs", "puppet",
> > "etc"]
> > ArgumentError: string contains null byte
> >         from (irb):6:in `join'
> >         from (irb):6
> >         from C:/ruby193/bin/irb:12:in `<main>'
> >
> >
> > Installed versions:
> >
> > : ruby -v
> > ruby 1.9.3p194 (2012-04-20) [i386-mingw32]
> >
> > : gem list
> > *** LOCAL GEMS ***
> > ...
> > facter (1.6.13, 1.6.12)
> > puppet (3.0.0, 2.7.19)
> > puppetlabs_spec_helper (0.3.0)
> > rspec (2.11.0, 2.10.0)
> > rspec-puppet (0.1.5, 0.1.4)
> > sys-admin (1.5.6 x86-mingw32)
> > win32-api (1.4.8 x86-mingw32)
> > win32-dir (0.4.1)
> > win32-process (0.7.0)
> > win32-security (0.1.4, 0.1.3)
> > win32-service (0.7.2 x86-mingw32)
> > win32-taskscheduler (0.2.2)
> > windows-api (0.4.2)
> > windows-pr (1.2.2)
> >
> > Thanks
> >
> > Ed Sumerfield
> >
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Puppet Developers" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group at
> > http://groups.google.com/group/puppet-dev?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Developers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/puppet-dev?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to