From: Benjamin Marzinski <bmarzins@redhat.com>
To: Martin Wilck <martin.wilck@suse.com>
Cc: Christophe Varoqui <christophe.varoqui@opensvc.com>,
device-mapper development <dm-devel@lists.linux.dev>
Subject: Re: [PATCH v2] libmultipath: fix ontap prioritizer snprintf limits
Date: Thu, 8 Aug 2024 10:23:55 -0400 [thread overview]
Message-ID: <ZrTU-0Ks8P0BCilu@redhat.com> (raw)
In-Reply-To: <c57cc983f1e226b284a67a9e801c97602fed0783.camel@suse.com>
On Thu, Aug 08, 2024 at 10:55:19AM +0200, Martin Wilck wrote:
> On Wed, 2024-08-07 at 18:59 -0400, Benjamin Marzinski wrote:
> > The ontap prioritizer functions dump_cdb() and process_sg_error()
> > both
> > incorrectly set the snprintf() limits larger than the available
> > space.
> > Instead of multiplying the number of elements to print by the size of
> > an
> > element to calculate the limit, they multiplied the number of
> > elements
> > to print by the maximum number of elements that the buffer could
> > hold.
> >
> > Fix this by making these functions use strbufs instead.
> >
> > Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
> > ---
> >
> > changes in v2:
> > Use strbufs as suggested by Martin Wilck.
> >
> > libmultipath/prioritizers/ontap.c | 28 +++++++++++++++-------------
> > 1 file changed, 15 insertions(+), 13 deletions(-)
> >
> > diff --git a/libmultipath/prioritizers/ontap.c
> > b/libmultipath/prioritizers/ontap.c
> > index 117886ea..b508371d 100644
> > --- a/libmultipath/prioritizers/ontap.c
> > +++ b/libmultipath/prioritizers/ontap.c
> > @@ -23,6 +23,7 @@
> > #include "prio.h"
> > #include "structs.h"
> > #include "unaligned.h"
> > +#include "strbuf.h"
> >
> > #define INQUIRY_CMD 0x12
> > #define INQUIRY_CMDLEN 6
> > @@ -35,32 +36,33 @@
> > static void dump_cdb(unsigned char *cdb, int size)
> > {
> > int i;
> > - char buf[10*5+1];
> > - char * p = &buf[0];
> > + STRBUF_ON_STACK(buf);
> >
> > - condlog(0, "- SCSI CDB: ");
> > - for (i=0; i<size; i++) {
> > - p += snprintf(p, 10*(size-i), "0x%02x ", cdb[i]);
> > + for (i = 0; i < size; i++) {
> > + if (print_strbuf(&buf, "0x%02x ", cdb[i]) < 0) {
> > + condlog(0, "ontap prio: failed to dump SCSI
> > CDB");
>
> If print_strbuf() fails (very probably because it failed to allocate
> memory), condlog() is unlikely to succeed, either. I thought we agreed
> that trying to spit out error messages in this situation makes little
> sense.
>
> Anyway, I guess the condlog call doesn't actually hurt, so:
>
> Reviewed-by: Martin Wilck <mwilck@suse.com>
>
> (If you consent, I'll edit the commit and remove the condlog call).
Feel free to remove them.
-Ben
>
> Regards,
> Martin
prev parent reply other threads:[~2024-08-08 14:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-07 22:59 [PATCH v2] libmultipath: fix ontap prioritizer snprintf limits Benjamin Marzinski
2024-08-08 8:55 ` Martin Wilck
2024-08-08 14:23 ` Benjamin Marzinski [this message]
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=ZrTU-0Ks8P0BCilu@redhat.com \
--to=bmarzins@redhat.com \
--cc=christophe.varoqui@opensvc.com \
--cc=dm-devel@lists.linux.dev \
--cc=martin.wilck@suse.com \
/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.