[Spice-devel] [vdagent-win 3/3] Remove MSVC++ strncpy/strcat fallbacks
Uri Lublin
uril at redhat.com
Thu Mar 19 04:50:38 PDT 2015
On 02/16/2015 12:29 PM, Christophe Fergeau wrote:
> We currently have macros silently replacing use of strncpy/strcat with
> strcpy_s/strcat_s when using MSVC++. However, these macros can have
> unexpected effects as they use sizeof to find out the maximum size of
> the destination string. This is a very significant behaviour from
> strncpy/strcat, which can lead to subtle bugs as the behaviour is
> different between mingw and MSVC++.
> Now that we have our implementation of strcpy_s/strcat_s, we don't need
> these #defines.
I think this patch can be squashed into the previous
patch, which makes use of vdagent_str*_s and making
these macros unused. I'm fine with leaving it as is.
> ---
> common/vdcommon.h | 2 --
> vdagent/file_xfer.h | 2 +-
> 2 files changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/common/vdcommon.h b/common/vdcommon.h
> index 002ac23..93bb673 100644
> --- a/common/vdcommon.h
> +++ b/common/vdcommon.h
> @@ -92,8 +92,6 @@ errno_t vdagent_strcpy_s(char *strDestination,
>
> #ifdef _MSC_VER // compiling with Visual Studio
> #define snprintf sprintf_s
> -#define strncpy(d,s,n) strcpy_s(s, __min(n+1, sizeof(d)), s)
> -#define strcat(d,s) strcat_s(d, sizeof(d), s)
> #define sscanf sscanf_s
> #endif
>
> diff --git a/vdagent/file_xfer.h b/vdagent/file_xfer.h
> index 7f756e3..7ac911e 100644
> --- a/vdagent/file_xfer.h
> +++ b/vdagent/file_xfer.h
> @@ -27,7 +27,7 @@ typedef struct ALIGN_VC FileXferTask {
> // FIXME: should raise an error if name is too long..
> // currently the only user is FileXfer::handle_start
> // which verifies that strlen(_name) < MAX_PATH
> - vdagent_strncpy_s(name, sizeof(name), _name);
> + vdagent_strcpy_s(name, sizeof(name), _name);
This is to be squashed in the previous patch
> }
> HANDLE handle;
> uint64_t size;
>
More information about the Spice-devel
mailing list