On Wed, Jul 10, 2024 at 08:20:23 +0700, Max Nikulin wrote:
> On 10/07/2024 02:35, Thomas Schmitt wrote:
> > Here the error happens while trying to set the attribute.
> > Shell equivalent is
> > 
> >    setfattr -n system.nfs4_acl -v 
> > '\0\0\0\3\0\0\0\0\0\0\0\0\0\26\1\247\0\0\0\6OWNER@\0\0\0\0\0' /tmp/x
> 
> Shell does not interpret backslashes in single (and double) quotes. $'\0...'
> might be better

You cannot pass raw NUL bytes as an argument to a program.  It's
impossible.  The argument with a NUL byte in the first position will be
treated as an empty string (zero length).

> echo '\026' | xxd -g 1
> 00000000: 5c 30 32 36 0a                                   \026.
> 
> echo $'\026' | xxd -g 1
> 00000000: 16 0a                                            ..

hobbit:~$ echo $'\000\000ABCDEFG' | hd
00000000  0a                                                |.|
00000001

Thomas's command is *relying* on setfattr interpreting the backslash
sequences, because the shell cannot be allowed to do so.

Reply via email to