From: "J. Bruce Fields" <firstname.lastname@example.org> To: Andy Shevchenko <email@example.com> Cc: firstname.lastname@example.org Subject: Re: [PATCH 08/16] nfsd: escape high characters in binary data Date: Tue, 6 Aug 2019 14:50:08 -0400 Message-ID: <20190806185008.GC9456@parsley.fieldses.org> (raw) In-Reply-To: <20190806121931.GA29578@smile.fi.intel.com> On Tue, Aug 06, 2019 at 03:19:31PM +0300, Andy Shevchenko wrote: > On Thu, Jun 20, 2019 at 10:51:07AM -0400, J. Bruce Fields wrote: > > From: "J. Bruce Fields" <email@example.com> > > > > I'm exposing some information about NFS clients in pseudofiles. I > > expect to eventually have simple tools to help read those pseudofiles. > > > > But it's also helpful if the raw files are human-readable to the extent > > possible. It aids debugging and makes them usable on systems that don't > > have the latest nfs-utils. > > > > A minor challenge there is opaque client-generated protocol objects like > > state owners and client identifiers. Some clients generate those to > > include handy information in plain ascii. But they may also include > > arbitrary byte sequences. > > > > I think the simplest approach is to limit to isprint(c) && isascii(c) > > and escape everything else. > > > > That means you can just cat the file and get something that looks OK. > > Also, I'm trying to keep these files legal YAML, which requires them to > > UTF-8, and this is a simple way to guarantee that. > > Two questions: > - why can't be original function extended to cover this case > (using additional flags, maybe)? I found the ESCAPE_NP/"only" logic made it a little difficult to extend string_escape_mem(). So, I wrote a patch series that removes the string_escape_mem flags that aren't used, simplifies it a bit, then separates the flags into two different types: those that select which characters to escape (non-printable, non-ascii, whitespace, etc.) and those that choose a style of escaping to use (octal, hex, or \\). That seems to make the code a little easier to extend while still covering the cases people actually use. I'll try to get those out this week and you can tell me what you think. > - where are the test cases? I didn't write a test case. I agree that it would be a good idea--I'll work on it. --b.
next prev parent reply index Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-06-20 14:50 [PATCH 00/16] exposing knfsd client state to userspace J. Bruce Fields 2019-06-20 14:51 ` [PATCH 01/16] nfsd: persist nfsd filesystem across mounts J. Bruce Fields 2019-06-20 14:51 ` [PATCH 02/16] nfsd: rename cl_refcount J. Bruce Fields 2019-06-20 14:51 ` [PATCH 03/16] nfsd4: use reference count to free client J. Bruce Fields 2019-06-20 14:51 ` [PATCH 04/16] nfsd: add nfsd/clients directory J. Bruce Fields 2019-06-20 14:51 ` [PATCH 05/16] nfsd: make client/ directory names small ints J. Bruce Fields 2019-06-20 14:51 ` [PATCH 06/16] nfsd4: add a client info file J. Bruce Fields 2019-06-20 14:51 ` [PATCH 07/16] nfsd: copy client's address including port number to cl_addr J. Bruce Fields 2019-06-20 14:51 ` [PATCH 08/16] nfsd: escape high characters in binary data J. Bruce Fields 2019-06-21 17:45 ` bfields 2019-06-21 22:26 ` Kees Cook 2019-06-22 19:00 ` J. Bruce Fields 2019-06-22 20:22 ` Kees Cook 2019-06-24 21:05 ` J. Bruce Fields 2019-06-26 16:21 ` J. Bruce Fields 2019-06-27 4:16 ` Kees Cook 2019-06-27 15:23 ` J. Bruce Fields 2019-06-27 20:21 ` J. Bruce Fields 2019-06-28 3:58 ` Kees Cook 2019-06-28 16:33 ` J. Bruce Fields 2019-07-10 22:09 ` J. Bruce Fields 2019-07-11 1:54 ` Kees Cook 2019-08-06 12:19 ` Andy Shevchenko 2019-08-06 18:50 ` J. Bruce Fields [this message] 2019-08-07 9:00 ` Andy Shevchenko 2019-08-08 11:28 ` bfields 2019-08-27 13:36 ` Andy Shevchenko 2019-06-20 14:51 ` [PATCH 09/16] nfsd: add more information to client info file J. Bruce Fields 2019-06-20 14:51 ` [PATCH 10/16] nfsd4: add file to display list of client's opens J. Bruce Fields 2019-06-20 14:51 ` [PATCH 11/16] nfsd: show lock and deleg stateids J. Bruce Fields 2019-06-20 14:51 ` [PATCH 12/16] nfsd4: show layout stateids J. Bruce Fields 2019-06-20 14:51 ` [PATCH 13/16] nfsd: create get_nfsdfs_clp helper J. Bruce Fields 2019-06-20 14:51 ` [PATCH 14/16] nfsd: allow forced expiration of NFSv4 clients J. Bruce Fields 2019-06-20 14:51 ` [PATCH 15/16] nfsd: create xdr_netobj_dup helper J. Bruce Fields 2019-06-20 14:51 ` [PATCH 16/16] nfsd: decode implementation id J. Bruce Fields 2019-06-21 18:13 ` [PATCH 00/16] exposing knfsd client state to userspace bfields 2019-06-21 19:25 ` Anna Schumaker 2019-06-21 22:08 ` J. Bruce Fields
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190806185008.GC9456@parsley.fieldses.org \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Linux-NFS Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-nfs/0 linux-nfs/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-nfs linux-nfs/ https://lore.kernel.org/linux-nfs \ email@example.com public-inbox-index linux-nfs Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-nfs AGPL code for this site: git clone https://public-inbox.org/public-inbox.git