12
5
Null bytes (ASCII 0x00) don't appear to be copyable (Ctrl+C-able) on Windows. For a demonstration of this, open up your browser's dev console and do console.log('a\x00b')
. If you try and copy-paste the resulting string on a Windows 8 machine (and probably other versions of Windows too), you'll find that only the a
gets copied. The \x00
and everything after it is ignored.
Is there any way to copy the entirety of a string that contains null bytes? Can the clipboard even hold null bytes?
(Auxiliary question: why can't null bytes be copied? E.g. is there a security-related reason for this, or is it just Windows being silly?)
good question.. be interesting to see if it's putting it into the clipboard xxd can output nulls `C:>echo 000000| xxd -r -p|xxd -p<ENTER> 000000
C:>echo 000000| xxd -r -p|clip<ENTER>
using unxutils gclip and pclip `C:>echo 000000| xxd -r -p|gclip<ENTER>
C:>pclip|xxd -p<ENTER> C:>pclip>a.a<ENTER>` <-- it not clear to me whether the nulls are going into the clipboard.. or whether they're in but not pasting out. – barlop – 2015-07-28T20:16:49.070
2Somewhere in the chain, a program is using null-terminated string functions/representations (i.e. C string functions). Very common. My meager understanding of such things is "yes" there are potential security issues with embedding nulls, mostly due to the potential for mis-identification of string length and buffer overflow(??). – Yorik – 2015-07-28T20:45:17.397
It's a puzzler: I copied the contents of a JPG to the clipboard, and when I read it back it was truncated at the first null, which suggests the clipboard is text-based. Yet I can screen dump or cut and paste images between graphics packages without a problem. – AFH – 2015-07-29T10:09:34.730
I guess it depends on format used. Clipboard supports different formats. If you copy text, them most likely null-characters aren't supported because they're used as string terminator. If you use a binary clipboard format, then you can copy and paste null bytes. – Alexey Ivanov – 2016-04-01T08:33:57.393