Issue #18323 has been reported by Josh Cooper.
----------------------------------------
Bug #18323: Windows user provider fails to create user with non-ASCII characters
https://projects.puppetlabs.com/issues/18323
Author: Josh Cooper
Status: Accepted
Priority: Normal
Assignee:
Category:
Target version:
Affected Puppet version: 2.7.6
Keywords: windows adsi i18n
Branch:
The windows_adsi user provider essentially does the following when creating a
user:
<pre>
require 'Win32API'
require 'win32ole'
def computer_name
buf = " " * 128
Win32API.new('kernel32', 'GetComputerName', ['P','P'], 'I').call(buf,
buf.length.to_s)
buf.unpack("A*")
end
conn = WIN32OLE.connect("WinNT://#{computer_name}")
user = conn.Create('user', name)
user.SetPassword(password)
user.SetInfo
</pre>
On Ruby 1.8.7, this succeeds, but results in a corrupt username when using the
name 'Евгений'. I think this is because ruby's implementation (win32ole.c)
defaults to ANSI codepage, so internally it tries to convert
MultiByteToWideChar using the wrong codepage. There is a `WIN32OLE.codepage=`
method, but it only accepts a select number of options in 1.8.7.
Also the `Puppet::Util::ADSI.computer_name` calls `buf.unpack('A*')` when
building the ADSI connection string. This returns an array, instead of a
string. In ruby 1.8.7, it automatically converts the array to a string.
On Ruby 1.9.3, WIN32OLE uses the right code page, and puppet would set the
username correctly, but since ruby 1.9 doesn't automatically convert the array
to a string, it fails. The `buf.unpack('A*')` line should be removed as it
serves no purpose. Once that is done, then things should work as expected on
ruby 1.9
--
You have received this notification because you have either subscribed to it,
or are involved in it.
To change your notification preferences, please click here:
http://projects.puppetlabs.com/my/account
--
You received this message because you are subscribed to the Google Groups
"Puppet Bugs" 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-bugs?hl=en.