From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Mon, 3 Apr 2017 11:50:44 +0200 Subject: [U-Boot] [PATCH v6 1/1] usb: gadget: avoid variable name clipping in cb_getvar In-Reply-To: References: Message-ID: <20170403115044.247edee2@jawa> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Mon, 3 Apr 2017 11:28:44 +0200 Nicolas le bayon wrote: > From: Nicolas Le Bayon > > Instead of using a fixed-size array to store variable name, > preferring a dynamic allocation treats correctly all variable name > lengths. Variable names are growing through releases and features. By > this way, name clipping is prevented. Acked-by: Lukasz Majewski > > Signed-off-by: Nicolas Le Bayon > Reviewed-by: Marek Vasut Marek, could you pull this patch directly to -usb tree? I do not have more -dfu patches to pull to this merge window. Thanks in advance. > --- > > Changes in v2: > - instead of using a bigger fixed size, use malloc to fit with size > needs > > Changes in v3: > - v2 was an error (intermediate version), so propose a complete one > > Changes in v4: > - be more explicit and detailed in label and description fields > - remove intermediate variable only used one time > - be more explicit in error message > - fix indent issue > > Changes in v5: > - drop an unuseful error() call > > Changes in v6: > - add Marek review approval > > drivers/usb/gadget/f_fastboot.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_ > fastboot.c > index 2160b1c..7cd6d24 100644 > --- a/drivers/usb/gadget/f_fastboot.c > +++ b/drivers/usb/gadget/f_fastboot.c > @@ -432,9 +432,15 @@ static void cb_getvar(struct usb_ep *ep, struct > usb_request *req) > else > strcpy(response, "FAILValue not set"); > } else { > - char envstr[32]; > + char *envstr; > > - snprintf(envstr, sizeof(envstr) - 1, "fastboot.%s", > cmd); > + envstr = malloc(strlen("fastboot.") + strlen(cmd) + > 1); > + if (!envstr) { > + fastboot_tx_write_str("FAILmalloc error"); > + return; > + } > + > + sprintf(envstr, "fastboot.%s", cmd); > s = getenv(envstr); > if (s) { > strncat(response, s, chars_left); > @@ -442,6 +448,8 @@ static void cb_getvar(struct usb_ep *ep, struct > usb_request *req) > printf("WARNING: unknown variable: %s\n", > cmd); strcpy(response, "FAILVariable not implemented"); > } > + > + free(envstr); > } > fastboot_tx_write_str(response); > } > -- > 1.9.1 Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de