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;
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel