From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 2/4] usb/gadget: fastboot: add eMMC support for flash command
Date: Thu, 7 Aug 2014 15:23:42 +0200 [thread overview]
Message-ID: <201408071523.42634.marex@denx.de> (raw)
In-Reply-To: <53E2C81D.6050003@broadcom.com>
On Thursday, August 07, 2014 at 02:28:13 AM, Steve Rae wrote:
> On 14-08-06 05:13 PM, Marek Vasut wrote:
> > On Thursday, August 07, 2014 at 01:48:06 AM, Steve Rae wrote:
> >> On 14-07-30 06:37 PM, Marek Vasut wrote:
> >>> On Thursday, June 26, 2014 at 10:13:22 PM, Steve Rae wrote:
> >>> [...]
> >>>
> >>>> +
> >>>> +#include <common.h>
> >>>> +#include <fb_mmc.h>
> >>>> +#include <part.h>
> >>>> +#include <sparse_format.h>
> >>>> +
> >>>> +/* The 64 defined bytes plus \0 */
> >>>> +#define RESPONSE_LEN (64 + 1)
> >>>> +
> >>>> +static char *response_str;
> >>>
> >>> I'd suggest to pass this "response_str" around instead of making it
> >>> global.
> >>
> >> That would involve adding it to fastboot_resp(), which is called 11
> >> times in this code, from 3 different functions (so would need to add
> >> this to two of the functions...). And as these evolve, there will likely
> >> be more nested functions, which would all require "passing it
> >> around".... I think that this "static global pointer" is a cleaner
> >> implementation.
> >
> > Eventually, the amount of these static variables in the code will grow
> > and it will become increasingly difficult to weed them out. I believe it
> > would be even better to pass around some kind of a structure with
> > "private data" of the fastboot, which would cater for all possible
> > variables which might come in the future. What do you think ?
>
> Yes -- if there is private data that the fastboot implementation
> requires, then a data structure is the way to go. However, I still think
> that this "fastboot response string" would even be an exception to that
> private data....
OK, let's leave it this way for now.
> >>>> +static void fastboot_resp(const char *s)
> >>>> +{
> >>>> + strncpy(response_str, s, RESPONSE_LEN);
> >>>> + response_str[RESPONSE_LEN - 1] = '\0';
> >>>
> >>> This could be shrunk to a single snprintf(response_str,
> >>> RESPONSE_LENGTH, s); I think, but I'm not sure if the overhead won't
> >>> grow.
> >>
> >> snprintf() is used very sparingling in U-Boot
> >
> > This is not a reason to avoid it.
>
> true....
>
> >> , and with the cautionary statements in README (line 852)
> >
> > Which statements? Can you please point them out? I fail to see them,
> > sorry.
>
> I was referring to what you mention below...
> 852 - Safe printf() functions
> 853 Define CONFIG_SYS_VSNPRINTF to compile in safe versions of
> 854 the printf() functions. These are defined in
> 855 include/vsprintf.h and include snprintf(), vsnprintf() and
> 856 so on. Code size increase is approximately 300-500 bytes.
> 857 If this option is not given then these functions will
> 858 silently discard their buffer size argument - this means
> 859 you are not getting any overflow checking in this case.
I really don't see the "cautionary statements" here , no . I see that it
discards the size checking if this CONFIG_SYS_VSNPRINTF is not enabled, but that
does not obstruct the operation of those functions.
> >> and the fact that CONFIG_SYS_VSNPRINTF is not defined for armv7 builds,
> >> I am
> >
> > not going to use it....
> >
> > Is it a problem to define it? Also, even without CONFIG_SYS_VSNPRINTF ,
> > the
> >
> > functions are still available, see the README:
> > 857 If this option is not given then these functions
> > will 858 silently discard their buffer size argument -
> > this means 859 you are not getting any overflow
> > checking in this case.
> >
> > I have yet to see some hard-evidence against using safe printing
> > functions here.
>
> I don't want to be the first to defined it for all of armv7....
Honestly, we should just enable this CONFIG_SYS_VSNPRINTF by default for the
good of humanity and all the things, since this unbounded string handling is
just evil (see how OpenSSL ended up, partly because of that ... and I am just
starting to see the pattern in all the security code). I don't want to go down
that road with U-Boot.
So, would you please cook a separate patch to enable this by default, so it
would spur the right kind of discussion on this matter ?
> And I really don't want to define it only only my boards running so that
> they can run 'fastboot'
> What do you suggest?
See above, thanks !
next prev parent reply other threads:[~2014-08-07 13:23 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-26 20:13 [U-Boot] [PATCH v3 0/4] Implement "fastboot flash" for eMMC Steve Rae
2014-06-26 20:13 ` [U-Boot] [PATCH v3 1/4] usb/gadget: fastboot: add sparse image definitions Steve Rae
2014-07-31 1:25 ` Marek Vasut
2014-07-31 17:32 ` Steve Rae
2014-08-01 12:13 ` Marek Vasut
2014-08-05 14:00 ` Tom Rini
2014-08-05 22:17 ` Steve Rae
2014-06-26 20:13 ` [U-Boot] [PATCH v3 2/4] usb/gadget: fastboot: add eMMC support for flash command Steve Rae
2014-07-31 1:37 ` Marek Vasut
2014-08-06 23:48 ` Steve Rae
2014-08-07 0:13 ` Marek Vasut
2014-08-07 0:28 ` Steve Rae
2014-08-07 13:23 ` Marek Vasut [this message]
2014-08-07 13:28 ` Pantelis Antoniou
2014-08-07 13:43 ` Marek Vasut
2014-08-07 16:52 ` Steve Rae
2014-08-07 17:12 ` Marek Vasut
2014-06-26 20:13 ` [U-Boot] [PATCH v3 3/4] usb/gadget: fastboot: add " Steve Rae
2014-07-31 1:39 ` Marek Vasut
2014-08-06 23:35 ` Steve Rae
2014-06-26 20:13 ` [U-Boot] [PATCH v3 4/4] usb/gadget: fastboot: minor cleanup Steve Rae
2014-07-31 1:40 ` Marek Vasut
2014-08-06 23:34 ` Steve Rae
2014-07-31 1:02 ` [U-Boot] [PATCH v3 0/4] Implement "fastboot flash" for eMMC Steve Rae
2014-07-31 1:23 ` Marek Vasut
2014-07-31 17:30 ` Steve Rae
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=201408071523.42634.marex@denx.de \
--to=marex@denx.de \
--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