with following define in "usbd_conf.h" : "#define USB_MAX_STR_DESC_SIZ 50"

However the "USBD_PRODUCT_FS_STRING" is define in "usbd_desc.c" as "#define USBD_PRODUCT_FS_STRING "STM32 Virtual ComPort in FS Mode" " so it's a string of 32 characters.

When USBD_GetString(...) is called it converts an ascii string to unicode string so doubles the size of the string and adds its length at the beginning. So for a string of 32 chars a size of 66 chars have to be reserved, that is 16 more than it is.

I don't know who alert about this little mistake but for me it has been a pain because it overflowed over data I used in my main application. So if it can help someone in the same case I post it.