From: "J. Bruce Fields" <bfields@redhat.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: linux-kernel@vger.kernel.org, Kees Cook <keescook@chromium.org>,
"J. Bruce Fields" <bfields@redhat.com>
Subject: [PATCH 9/9] Remove string_escape_mem_ascii
Date: Thu, 5 Sep 2019 15:44:33 -0400 [thread overview]
Message-ID: <1567712673-1629-9-git-send-email-bfields@redhat.com> (raw)
In-Reply-To: <1567712673-1629-1-git-send-email-bfields@redhat.com>
From: "J. Bruce Fields" <bfields@redhat.com>
It's easier to do this in string_escape_mem now.
Might also consider non-ascii and quote-mark sprintf modifiers and then
we might make do with seq_printk.
---
fs/seq_file.c | 3 ++-
include/linux/string_helpers.h | 3 +--
lib/string_helpers.c | 24 ++++--------------------
3 files changed, 7 insertions(+), 23 deletions(-)
diff --git a/fs/seq_file.c b/fs/seq_file.c
index 63e5a7c4dbf7..0e45a25523ad 100644
--- a/fs/seq_file.c
+++ b/fs/seq_file.c
@@ -390,7 +390,8 @@ void seq_escape_mem_ascii(struct seq_file *m, const char *src, size_t isz)
size_t size = seq_get_buf(m, &buf);
int ret;
- ret = string_escape_mem_ascii(src, isz, buf, size);
+ ret = string_escape_mem(src, isz, buf, size, ESCAPE_NP|ESCAPE_NONASCII|
+ ESCAPE_STYLE_SLASH|ESCAPE_STYLE_HEX, "\"\\");
seq_commit(m, ret < size ? ret : -1);
}
EXPORT_SYMBOL(seq_escape_mem_ascii);
diff --git a/include/linux/string_helpers.h b/include/linux/string_helpers.h
index 5d350f7f6874..f3388591d83f 100644
--- a/include/linux/string_helpers.h
+++ b/include/linux/string_helpers.h
@@ -43,6 +43,7 @@ static inline int string_unescape_any_inplace(char *buf)
#define ESCAPE_SPECIAL 0x01
#define ESCAPE_NP 0x02
+#define ESCAPE_NONASCII 0x04
#define ESCAPE_ANY_NP (ESCAPE_SPECIAL | ESCAPE_NP)
#define ESCAPE_STYLE_SLASH 0x20
#define ESCAPE_STYLE_OCTAL 0x40
@@ -52,8 +53,6 @@ static inline int string_unescape_any_inplace(char *buf)
int string_escape_mem(const char *src, size_t isz, char *dst, size_t osz,
unsigned int flags, const char *only);
-int string_escape_mem_ascii(const char *src, size_t isz, char *dst,
- size_t osz);
static inline int string_escape_str(const char *src, char *dst, size_t sz,
unsigned int flags, const char *only)
{
diff --git a/lib/string_helpers.c b/lib/string_helpers.c
index 6f553f893fda..1dacf76eada0 100644
--- a/lib/string_helpers.c
+++ b/lib/string_helpers.c
@@ -439,6 +439,8 @@ static bool is_special(char c)
* '\a' - alert (BEL)
* '\e' - escape
* '\0' - null
+ * %ESCAPE_NONASCII:
+ * escape characters with the high bit set
* %ESCAPE_NP:
* escape only non-printable characters (checked by isprint)
* %ESCAPE_ANY_NP:
@@ -468,7 +470,8 @@ int string_escape_mem(const char *src, size_t isz, char *dst, size_t osz,
if ((is_dict && strchr(esc, c)) ||
(flags & ESCAPE_NP && !isprint(c)) ||
- (flags & ESCAPE_SPECIAL && is_special(c))) {
+ (flags & ESCAPE_SPECIAL && is_special(c)) ||
+ (flags & ESCAPE_NONASCII && !isascii(c))) {
if (flags & ESCAPE_STYLE_SLASH &&
escape_special(c, &p, end))
@@ -491,25 +494,6 @@ int string_escape_mem(const char *src, size_t isz, char *dst, size_t osz,
}
EXPORT_SYMBOL(string_escape_mem);
-int string_escape_mem_ascii(const char *src, size_t isz, char *dst,
- size_t osz)
-{
- char *p = dst;
- char *end = p + osz;
-
- while (isz--) {
- unsigned char c = *src++;
-
- if (!isprint(c) || !isascii(c) || c == '"' || c == '\\')
- escape_hex(c, &p, end);
- else
- escape_passthrough(c, &p, end);
- }
-
- return p - dst;
-}
-EXPORT_SYMBOL(string_escape_mem_ascii);
-
/*
* Return an allocated string that has been escaped of special characters
* and double quotes, making it safe to log in quotes.
--
2.21.0
next prev parent reply other threads:[~2019-09-05 19:44 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20190905193604.GC31247@fieldses.org>
2019-09-05 19:44 ` [PATCH 1/9] rtl8192*: display ESSIDs using %pE J. Bruce Fields
2019-09-05 19:44 ` [PATCH 2/9] thunderbolt: show key using %*s not %*pE J. Bruce Fields
2019-09-05 21:17 ` Kees Cook
2019-09-09 19:34 ` Joe Perches
2019-09-05 19:44 ` [PATCH 3/9] staging: wlan-ng: use "%*pE" for serial number J. Bruce Fields
2019-09-05 21:30 ` Kees Cook
2019-09-05 19:44 ` [PATCH 4/9] Remove unused string_escape_*_any_np J. Bruce Fields
2019-09-05 21:32 ` Kees Cook
2019-09-05 19:44 ` [PATCH 5/9] Remove unused %*pE[achnops] formats J. Bruce Fields
2019-09-05 21:34 ` Kees Cook
2019-09-06 10:01 ` Andy Shevchenko
2019-09-06 10:03 ` Andy Shevchenko
2019-09-05 19:44 ` [PATCH 6/9] Eliminate unused ESCAPE_NULL, ESCAPE_SPACE flags J. Bruce Fields
2019-09-05 22:11 ` Kees Cook
2019-09-06 10:17 ` Andy Shevchenko
2019-09-05 19:44 ` [PATCH 7/9] Simplify string_escape_mem J. Bruce Fields
2019-09-05 22:29 ` Kees Cook
2019-09-05 19:44 ` [PATCH 8/9] minor kstrdup_quotable simplification J. Bruce Fields
2019-09-05 22:31 ` Kees Cook
2019-09-05 19:44 ` J. Bruce Fields [this message]
2019-09-05 22:34 ` [PATCH 9/9] Remove string_escape_mem_ascii Kees Cook
2019-09-06 10:20 ` Andy Shevchenko
2019-09-05 20:53 ` [PATCH 1/9] rtl8192*: display ESSIDs using %pE Kees Cook
2019-09-06 9:38 ` Andy Shevchenko
2019-09-06 15:53 ` Kees Cook
Reply instructions:
You may reply publicly 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=1567712673-1629-9-git-send-email-bfields@redhat.com \
--to=bfields@redhat.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.