From: Lukasz Majewski <l.majewski@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 4/7] dfu: MMC specific routines for DFU operation
Date: Tue, 10 Jul 2012 12:38:54 +0200 [thread overview]
Message-ID: <20120710123854.2c6de104@lmajewski.digital.local> (raw)
In-Reply-To: <20120710084542.GB5053@oliver-linux>
Hi Tom,
> On Wed, Jul 04, 2012 at 05:48:39PM +0200, Lukasz Majewski wrote:
> > Support for MMC storage devices to work with DFU framework.
> >
> > Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
> > Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> > Cc: Marek Vasut <marex@denx.de>
> [snip]
> > + case RAW_ADDR:
> > + sprintf(cmd_buf, "mmc write 0x%x %x %x", (unsigned
> > int) buf,
> > + dfu->data.mmc.lba_start,
> > dfu->data.mmc.lba_size);
> > + break;
> > + case FAT:
> > + sprintf(cmd_buf, "fatwrite mmc %d:%d 0x%x %s %lx",
> > + dfu->data.mmc.dev, dfu->data.mmc.part,
> > + (unsigned int) buf, dfu->name, *len);
> > + break;
> > + default:
> > + printf("%s: Wrong layout!\n", __func__);
> > + }
> > +
> > + debug("%s: %s 0x%p\n", __func__, cmd_buf, cmd_buf);
> > + run_command(cmd_buf, 0);
>
> If we try and take the long-view here, that fatwrite/mmc write don't
> perform a lot of sanity checking on input isn't good. Lots of
> commands I believe don't, but we can start somewhere.
Yes, indeed they don't. But I think, that it is a deeper problem.
When one looks into the cmd_mmc.c, the code is not checking the
correctness of passed data. It performs strncmp, then simple_strtoul
and with this parameter calls mmc->block_dev.block_read().
But I'm a bit concern if adding function:
do_mmcops_check(unsigned int lba_start, unsigned int lba_end, ...) to
do_mmcops(argc, argv) {
int i = simple_strtol(argv[]);
return do_mmcops_check(i);
}
will help with preventing errors.
As I've written previously, data from prompt is passed in a form of
text, which is converted to the well defined type anyway (with e.g.
simple_strtoul - returns unsigned long, strict_strtoul - returns int,
simple_strtol - returns long, simple_strtoull - returns unsigned long
long). Using those functions correctly would ensure correct types
passed to e.g. mmc->block_dev.block_read().
When one create the do_mmcops_check() function, the compiler would
check if its arguments are correct (i.e. the i in the above example is
int). What is the difference between checking at compile time the
output of simple_strtoul?
The real problem in my opinion is the lack of checking if arguments
passed as text to the do_mmcops are correct or not. This is not done
for MMC and I doubt, if adding compile time type checking (in a form of
a separate function) would solve/alleviate the problem.
> So, lets do
> what Marek was suggesting of making common/cmd_mmc.c and
> common/cmd_fat.c call a sub-function that takes compile-time
> typecheckable inputs, and call that here. That opens things up for
> later making the user commands perform better checking and so forth.
I'd like to point to the problem with passing and then parsing
parameters as text.
User typed parameters aren't checked.
Please correct me if I misunderstood the problem or the proposed
solution.
--
Best regards,
Lukasz Majewski
Samsung Poland R&D Center | Linux Platform Group
next prev parent reply other threads:[~2012-07-10 10:38 UTC|newest]
Thread overview: 147+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-03 9:38 [U-Boot] [PATCH 0/7] dfu:usb: Composite USB download gadget with DFU function Lukasz Majewski
2012-07-03 9:38 ` [U-Boot] [PATCH 1/7] dfu:usb: Support for g_dnl composite download gadget Lukasz Majewski
2012-07-03 18:41 ` Marek Vasut
2012-07-04 7:42 ` Lukasz Majewski
2012-07-20 4:14 ` Mike Frysinger
2012-07-23 15:25 ` Lukasz Majewski
2012-07-24 17:50 ` Mike Frysinger
2012-07-03 9:38 ` [U-Boot] [PATCH 2/7] dfu:usb: DFU USB function (f_dfu) support for g_dnl composite gadget Lukasz Majewski
2012-07-03 21:21 ` Marek Vasut
2012-07-04 8:39 ` Lukasz Majewski
2012-07-04 14:35 ` Marek Vasut
2012-07-04 15:04 ` Lukasz Majewski
2012-07-04 16:21 ` Marek Vasut
2012-07-03 9:38 ` [U-Boot] [PATCH 3/7] dfu: DFU backend implementation Lukasz Majewski
2012-07-03 21:28 ` Marek Vasut
2012-07-04 8:56 ` Lukasz Majewski
2012-07-04 14:36 ` Marek Vasut
2012-07-04 15:07 ` Lukasz Majewski
2012-07-04 16:22 ` Marek Vasut
2012-07-20 4:32 ` Mike Frysinger
2012-07-23 16:11 ` Lukasz Majewski
2012-07-03 9:38 ` [U-Boot] [PATCH 4/7] dfu: MMC specific routines for DFU operation Lukasz Majewski
2012-07-03 21:29 ` Marek Vasut
2012-07-03 21:55 ` Tom Rini
2012-07-03 22:01 ` Marek Vasut
2012-07-03 22:06 ` Tom Rini
2012-07-03 22:31 ` Marek Vasut
2012-07-03 22:33 ` Tom Rini
2012-07-03 23:07 ` Stephen Warren
2012-07-03 23:38 ` Tom Rini
2012-07-03 23:58 ` Stephen Warren
2012-07-04 0:13 ` Marek Vasut
2012-07-20 4:25 ` Mike Frysinger
2012-07-04 9:10 ` Lukasz Majewski
2012-07-04 14:38 ` Marek Vasut
2012-07-04 15:13 ` Lukasz Majewski
2012-07-03 9:38 ` [U-Boot] [PATCH 5/7] dfu:cmd: Support for DFU u-boot command Lukasz Majewski
2012-07-03 21:32 ` Marek Vasut
2012-07-04 9:28 ` Lukasz Majewski
2012-07-04 14:39 ` Marek Vasut
2012-07-20 4:23 ` Mike Frysinger
2012-07-20 11:33 ` Marek Vasut
2012-07-20 14:43 ` Mike Frysinger
2012-07-20 21:11 ` Marek Vasut
2012-07-21 17:20 ` Mike Frysinger
2012-07-21 17:21 ` Marek Vasut
2012-07-20 4:22 ` Mike Frysinger
2012-07-20 11:35 ` Marek Vasut
2012-07-20 4:20 ` Mike Frysinger
2012-07-23 16:01 ` Lukasz Majewski
2012-07-24 18:00 ` Mike Frysinger
2012-07-24 20:48 ` Lukasz Majewski
2012-07-03 9:38 ` [U-Boot] [PATCH 6/7] arm:trats: Support for USB UDC driver at TRATS board Lukasz Majewski
2012-07-04 0:20 ` Minkyu Kang
2012-07-04 9:33 ` Lukasz Majewski
2012-07-03 9:38 ` [U-Boot] [PATCH 7/7] arm:trats: Enable g_dnl composite USB gadget with embedded DFU function on TRATS Lukasz Majewski
2012-07-04 0:22 ` Minkyu Kang
2012-07-03 12:52 ` [U-Boot] [PATCH 0/7] dfu:usb: Composite USB download gadget with DFU function Otavio Salvador
2012-07-03 12:59 ` Marek Vasut
2012-07-04 15:48 ` [U-Boot] [PATCH v2 " Lukasz Majewski
2012-07-04 15:48 ` [U-Boot] [PATCH v2 1/7] dfu:usb: Support for g_dnl composite download gadget Lukasz Majewski
2012-07-09 16:30 ` Marek Vasut
2012-07-04 15:48 ` [U-Boot] [PATCH v2 2/7] dfu:usb: DFU USB function (f_dfu) support for g_dnl composite gadget Lukasz Majewski
2012-07-09 16:34 ` Marek Vasut
2012-07-04 15:48 ` [U-Boot] [PATCH v2 3/7] dfu: DFU backend implementation Lukasz Majewski
2012-07-09 16:35 ` Marek Vasut
2012-07-27 11:58 ` Wolfgang Denk
2012-07-27 13:15 ` Lukasz Majewski
2012-07-27 13:35 ` Wolfgang Denk
2012-07-27 13:47 ` Lukasz Majewski
2012-07-04 15:48 ` [U-Boot] [PATCH v2 4/7] dfu: MMC specific routines for DFU operation Lukasz Majewski
2012-07-09 16:36 ` Marek Vasut
2012-07-10 8:45 ` Tom Rini
2012-07-10 10:38 ` Lukasz Majewski [this message]
2012-07-11 11:54 ` Tom Rini
2012-07-12 12:39 ` Lukasz Majewski
2012-07-12 12:46 ` Tom Rini
2012-07-13 10:29 ` Marek Vasut
2012-07-13 21:27 ` Andy Fleming
2012-07-27 12:36 ` Wolfgang Denk
2012-07-27 12:43 ` Marek Vasut
2012-07-27 12:57 ` Wolfgang Denk
2012-07-27 13:15 ` Marek Vasut
2012-07-27 13:38 ` Wolfgang Denk
2012-07-27 13:33 ` Lukasz Majewski
2012-07-27 13:47 ` Wolfgang Denk
2012-07-04 15:48 ` [U-Boot] [PATCH v2 5/7] dfu:cmd: Support for DFU u-boot command Lukasz Majewski
2012-07-04 15:48 ` [U-Boot] [PATCH v2 6/7] arm:trats: Support for USB UDC driver at TRATS board Lukasz Majewski
2012-07-04 15:48 ` [U-Boot] [PATCH v2 7/7] arm:trats: Enable g_dnl composite USB gadget with embedded DFU function on TRATS Lukasz Majewski
2012-07-09 11:28 ` [U-Boot] [PATCH v2 0/7] dfu:usb: Composite USB download gadget with DFU function Lukasz Majewski
2012-07-09 11:46 ` Tom Rini
2012-07-09 16:25 ` Marek Vasut
2012-07-10 8:27 ` Lukasz Majewski
2012-07-10 9:28 ` Marek Vasut
2012-07-18 12:51 ` [U-Boot] [PATCH " Marek Vasut
2012-07-23 7:57 ` Lukasz Majewski
2012-07-23 10:57 ` Marek Vasut
2012-07-31 6:36 ` [U-Boot] [PATCH v3 0/7] dfu:usb: DFU support via USB Download gadget Lukasz Majewski
2012-07-31 6:36 ` [U-Boot] [PATCH v3 1/7] dfu:usb: Support for g_dnl composite download gadget Lukasz Majewski
2012-08-01 22:40 ` Mike Frysinger
2012-08-02 9:55 ` Lukasz Majewski
2012-07-31 6:36 ` [U-Boot] [PATCH v3 2/7] dfu:usb: DFU USB function (f_dfu) support for g_dnl composite gadget Lukasz Majewski
2012-08-01 22:45 ` Mike Frysinger
2012-08-02 10:54 ` Lukasz Majewski
2012-07-31 6:36 ` [U-Boot] [PATCH v3 3/7] dfu: DFU backend implementation Lukasz Majewski
2012-08-01 22:57 ` Mike Frysinger
2012-08-02 13:55 ` Lukasz Majewski
2012-08-03 23:19 ` Mike Frysinger
2012-08-04 7:47 ` Marek Vasut
2012-08-04 16:28 ` Mike Frysinger
2012-07-31 6:37 ` [U-Boot] [PATCH v3 4/7] dfu: MMC specific routines for DFU operation Lukasz Majewski
2012-08-01 23:00 ` Mike Frysinger
2012-08-02 14:47 ` Lukasz Majewski
2012-07-31 6:37 ` [U-Boot] [PATCH v3 5/7] dfu:cmd: Support for DFU u-boot command Lukasz Majewski
2012-07-31 17:14 ` Stephen Warren
2012-08-01 7:16 ` Lukasz Majewski
2012-08-01 17:13 ` Stephen Warren
2012-08-02 8:31 ` Lukasz Majewski
2012-08-02 15:52 ` Stephen Warren
2012-08-03 6:13 ` Lukasz Majewski
2012-08-03 15:32 ` Stephen Warren
2012-08-06 7:13 ` Lukasz Majewski
2012-08-01 18:04 ` Mike Frysinger
2012-08-02 7:16 ` Marek Vasut
2012-08-02 15:28 ` Lukasz Majewski
2012-08-02 17:47 ` Mike Frysinger
2012-07-31 6:37 ` [U-Boot] [PATCH v3 6/7] arm:trats: Support for USB UDC driver at TRATS board Lukasz Majewski
2012-07-31 8:31 ` Minkyu Kang
2012-07-31 6:37 ` [U-Boot] [PATCH v3 7/7] arm:trats: Enable g_dnl composite USB gadget with embedded DFU function on TRATS Lukasz Majewski
2012-07-31 8:32 ` Minkyu Kang
2012-08-03 7:45 ` [U-Boot] [PATCH v4 0/7] dfu:usb: DFU support via USB Download gadget Lukasz Majewski
2012-08-03 7:45 ` [U-Boot] [PATCH v4 1/7] dfu:usb: Support for g_dnl composite download gadget Lukasz Majewski
2012-08-03 7:45 ` [U-Boot] [PATCH v4 2/7] dfu:usb: DFU USB function (f_dfu) support for g_dnl composite gadget Lukasz Majewski
2012-08-03 7:45 ` [U-Boot] [PATCH v4 3/7] dfu: DFU backend implementation Lukasz Majewski
2012-08-03 7:45 ` [U-Boot] [PATCH v4 4/7] dfu: MMC specific routines for DFU operation Lukasz Majewski
2012-08-03 7:45 ` [U-Boot] [PATCH v4 5/7] dfu:cmd: Support for DFU u-boot command Lukasz Majewski
2012-08-03 7:45 ` [U-Boot] [PATCH v4 6/7] arm:trats: Support for USB UDC driver at TRATS board Lukasz Majewski
2012-08-03 7:45 ` [U-Boot] [PATCH v4 7/7] arm:trats: Enable g_dnl composite USB gadget with embedded DFU function on TRATS Lukasz Majewski
2012-08-06 12:41 ` [U-Boot] [PATCH v5 0/7] dfu:usb: DFU support via USB Download gadget Lukasz Majewski
2012-08-06 12:41 ` [U-Boot] [PATCH v5 1/7] dfu:usb: Support for g_dnl composite download gadget Lukasz Majewski
2012-08-06 12:41 ` [U-Boot] [PATCH v5 2/7] dfu:usb: DFU USB function (f_dfu) support for g_dnl composite gadget Lukasz Majewski
2012-08-06 12:41 ` [U-Boot] [PATCH v5 3/7] dfu: DFU backend implementation Lukasz Majewski
2012-08-06 12:41 ` [U-Boot] [PATCH v5 4/7] dfu: MMC specific routines for DFU operation Lukasz Majewski
2012-08-06 12:41 ` [U-Boot] [PATCH v5 5/7] dfu:cmd: Support for DFU u-boot command Lukasz Majewski
2012-08-06 12:41 ` [U-Boot] [PATCH v5 6/7] arm:trats: Support for USB UDC driver at TRATS board Lukasz Majewski
2012-08-06 12:41 ` [U-Boot] [PATCH v5 7/7] arm:trats: Enable g_dnl composite USB gadget with embedded DFU function on TRATS Lukasz Majewski
2012-08-06 20:31 ` [U-Boot] [PATCH v5 0/7] dfu:usb: DFU support via USB Download gadget Marek Vasut
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=20120710123854.2c6de104@lmajewski.digital.local \
--to=l.majewski@samsung.com \
--cc=u-boot@lists.denx.de \
/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