diff mbox

[1/2] usb: fix unbound stack usage for usb_mtp_add_str

Message ID 1457503813-31631-2-git-send-email-peterx@redhat.com
State New
Headers show

Commit Message

Peter Xu March 9, 2016, 6:10 a.m. UTC
Use heap instead of stack.

Signed-off-by: Peter Xu <peterx@redhat.com>
---
 hw/usb/dev-mtp.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Fam Zheng March 10, 2016, 1:54 a.m. UTC | #1
On Wed, 03/09 14:10, Peter Xu wrote:
> Use heap instead of stack.
> 
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
>  hw/usb/dev-mtp.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
> index 7391783..cf63fd0 100644
> --- a/hw/usb/dev-mtp.c
> +++ b/hw/usb/dev-mtp.c
> @@ -718,7 +718,7 @@ static void usb_mtp_add_wstr(MTPData *data, const wchar_t *str)
>  static void usb_mtp_add_str(MTPData *data, const char *str)
>  {
>      uint32_t len = strlen(str)+1;
> -    wchar_t wstr[len];
> +    wchar_t *wstr = g_malloc(sizeof(wchar_t) * len);

I think it is better to use g_new() in this case.

Fam

>      size_t ret;
>  
>      ret = mbstowcs(wstr, str, len);
> @@ -727,6 +727,8 @@ static void usb_mtp_add_str(MTPData *data, const char *str)
>      } else {
>          usb_mtp_add_wstr(data, wstr);
>      }
> +
> +    g_free(wstr);
>  }
>  
>  static void usb_mtp_add_time(MTPData *data, time_t time)
> -- 
> 2.4.3
> 
>
Peter Xu March 10, 2016, 2:25 a.m. UTC | #2
On Thu, Mar 10, 2016 at 09:54:41AM +0800, Fam Zheng wrote:
> On Wed, 03/09 14:10, Peter Xu wrote:
> > +    wchar_t *wstr = g_malloc(sizeof(wchar_t) * len);
> 
> I think it is better to use g_new() in this case.

Okay. Will re-send this one.

Thanks.
Peter
diff mbox

Patch

diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
index 7391783..cf63fd0 100644
--- a/hw/usb/dev-mtp.c
+++ b/hw/usb/dev-mtp.c
@@ -718,7 +718,7 @@  static void usb_mtp_add_wstr(MTPData *data, const wchar_t *str)
 static void usb_mtp_add_str(MTPData *data, const char *str)
 {
     uint32_t len = strlen(str)+1;
-    wchar_t wstr[len];
+    wchar_t *wstr = g_malloc(sizeof(wchar_t) * len);
     size_t ret;
 
     ret = mbstowcs(wstr, str, len);
@@ -727,6 +727,8 @@  static void usb_mtp_add_str(MTPData *data, const char *str)
     } else {
         usb_mtp_add_wstr(data, wstr);
     }
+
+    g_free(wstr);
 }
 
 static void usb_mtp_add_time(MTPData *data, time_t time)