Strings with null characters
Dominik George <[email protected]> Sun, 26 Jun 2011 15:17:20 +0200
| Newsgroups | gmane.comp.python.ctypes |
|---|---|
| Message-ID | <[email protected]> |
Hi,
I am using ctypes while porting parts of glibc to pure Python (i.e. to
be able to do ifconfig from within Python). The complete code can be
found in my Redmine under
http://git.proparity.net/redmine/projects/pyverkko/repository/revisions/master/show/src/pyverkko/ifconfig
.
In structs.py, I have defined the structs used by glibc to do ioctl(),
which works perfectly in most cases. But, this breaks when I have to
cope with null bytes. For example, set_ip_address("eth0", "192.168.0.1")
breaks, because:
I create an isntance of sockaddr, which is a ctypes Structure (or, a
PackableStructure, which is a ctypes Structure to which I added a pack()
method as described in the FAQ). Now, assigning the binary form of
192.168.0.1 to a member field of sockaddr, breaks because it is
expecting a null-termianted string, so the string I assign is only the
first two bytes because the third octet, 0, terminates the string.
I am not sure if Python does this while assigning, because the field
sa_data I am assigning to is declared as a char[14].
How can I take care that *all* bytes of a string are stored in the
Structure and recognized when I run pack(), i.e. strings aren't cut off
at the first null byte?
Regards,
Nik
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2