From: "Kars Mulder" <kerneldev@karsmulder.nl>
To: linux-kernel@vger.kernel.org
Subject: Writing to a const pointer: is this supposed to happen?
Date: Mon, 22 Jun 2020 13:35:35 +0200 [thread overview]
Message-ID: <3986-5ef09780-43-189d6180@550955> (raw)
In the file drivers/usb/core/quirks.c, I noticed a couple of odd things about the function "quirks_param_set", and I'd like to check whether those are ok according to the kernel programming practices. Here are the relevant lines from the function (several lines omitted):
static int quirks_param_set(const char *val, const struct kernel_param *kp) {
char *p, *field;
for (i = 0, p = (char *)val; p && *p;) {
field = strsep(&p, ":");
if (!field)
break;
In here a const pointer *val is cast into a non-const pointer and then written to by the function strsep, which replaces the first occurrence of the ':' token by a null-byte. Is this allowed?
On a minor side note, this function immediately checks whether the first call to strsep(&p, ":") returned a nullpointer. From what I can learn from the documentation, strsep always returns what *&p was when the strsep was called, and p is verified to be nonzero in the loop condition right before the call to strsep. Is this check actually necessary? Is it a good idea to add a return-value check anyway even if it is not necessary, as an abundance of caution?
next reply other threads:[~2020-06-22 11:35 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-22 11:35 Kars Mulder [this message]
2020-06-23 19:55 ` Writing to a const pointer: is this supposed to happen? Pavel Machek
2020-06-24 12:34 ` Kars Mulder
2020-06-24 13:10 ` Greg Kroah-Hartman
2020-06-24 15:25 ` Kars Mulder
2020-06-27 10:24 ` David Laight
2020-07-01 23:03 ` Kars Mulder
2020-07-02 7:55 ` David Laight
2020-07-02 21:48 ` Kars Mulder
2020-07-03 8:13 ` David Laight
2020-07-03 13:23 ` Kars Mulder
2020-07-04 11:55 ` Pavel Machek
2020-07-05 21:53 ` [PATCH] usb: core: fix quirks_param_set() writing to a const pointer Kars Mulder
2020-07-06 10:34 ` Greg Kroah-Hartman
2020-07-06 12:57 ` Kars Mulder
2020-07-06 13:07 ` Greg Kroah-Hartman
2020-07-06 13:58 ` Kars Mulder
[not found] <CAHp75Ve4O+OmVttjhtKepFWwZLU6tFMx5vNpPVJdB58mcLFm3w@mail.gmail.com>
2020-07-04 20:32 ` Writing to a const pointer: is this supposed to happen? Kars Mulder
2020-07-04 20:54 ` Andy Shevchenko
2020-07-05 18:27 ` Kars Mulder
[not found] <CAHp75Vf9ygQ++DL4ETMy54d=x6oS1qqHLhfyh58f7JCVvM17yA@mail.gmail.com>
2020-07-05 19:38 ` Kars Mulder
[not found] <CAHp75Ve3m=UK9r2o8bDotQWQBLz-fV8CO_VcTmWjdLW1p5wE-w@mail.gmail.com>
2020-07-05 20:48 ` Kars Mulder
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=3986-5ef09780-43-189d6180@550955 \
--to=kerneldev@karsmulder.nl \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox