summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-02-06Remove MSVC++ strncpy/strcat fallbacksHEADmasterChristophe Fergeau2-3/+1
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.
2015-02-06Use new vdagent_{strncpy,strcat}_s helpersChristophe Fergeau4-7/+12
2015-02-06Add strcat_s/strcpy_s fallbacksChristophe Fergeau2-0/+57
These security functions are available when building with MSVC++. With mingw, they can be used at build time, but their availability will depend on the version of MSVCRT the user has installed on their system. In particular, a default install of Windows XP will not have a new enough MSVCRT version, causing runtime failures as the binary built with mingw and using strcat_s will not be able to find the necessary entry point in the MSVCRT runtime. This commit adds some strcat_s/strcpy_s-like functions used with mingw which will always be available.
2015-01-19Update version/copyright in vdagent resource fileChristophe Fergeau1-5/+5
2014-12-30g_key_get_string: use size_t for pointer differenceUri Lublin1-1/+1
The 64 bit Visual Studio build complains that: .\file_xfer.cpp(223) : warning C4244: '=' : conversion from '__int64' to 'unsigned int', possible loss of data
2014-12-30Fix Visual Studio compiler warning (strcat and sscanf)Uri Lublin1-0/+2
This is a follow-up to commits 492ee05a6b and 4b9e9b1d28 Visual Studio complains: .\file_xfer.cpp(90) : warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. And a similar complain for sscanf. Replace them with the secure function when compiling with Visual Studio. Note that the size provided is sizeof(d), which means all calls to sscanf and strcat must be done with the first param (destination) being an array and not a pointer.
2014-12-30Fix Visual Studio compiler warning (strncpy)Uri Lublin2-0/+3
Visual Studio complains: vdagent\file_xfer.h(28) : warning C4996: 'strncpy': This function or variable may Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Replace strncpy with strcpy_s when building with Visual Studio. Adjust parameter order and difference in meaning of length: - length param is last in strncpy and second in strcpy_s - many calls to strncpy are given length param n-1, as strncpy does not guarantee that destination ends with '\0' - it's safer to set length param not larger than sizeof(d) (assuming d is an array not a pointer) Trying to use strcpy_s for both Visual Studio and mingw failed as strcpy_s is missing from the default msvcrt.dll on WinXP (See OLDMSVCRT in common/vdcommon.h).
2014-12-30Fix building with Visual Studio (snprintf)Uri Lublin1-0/+4
This commit is an addition to 4b9e9b1d28ea7eaec44ff73e2f91c4064986b12a Building with Visual Studio breaks as snprintf is not implemented: vdagent\file_xfer.cpp(198) : error C3861: 'snprintf': identifier not found Replace it with sprintf_s for Visual Studio. Trying to use sprintf_s for both Visual Studio and mingw failed for mingw64 (build succeeds but runtime error appears).
2014-12-30Fix building with Visual Studio (inttypes.h)Uri Lublin1-0/+7
As a followup of commit 462295d9f84658aa7. Building with Visual Studio, fails as there is no inttypes.h file: vdagent\file_xfer.cpp(21) : fatal error C1083: Cannot open include file: 'inttypes.h': No such file or directory This commit prevents including inttypes.h when building with Visual Studio, and defines PRIu64 that is defined in inttypes.h for mingw compiler.
2014-12-30vdcommon.h: consolidate defines under OLDMSVCRTUri Lublin1-3/+1
2014-12-30vdcommon.h: do not redefine _ftime_sUri Lublin1-0/+2
Fixes the following error: ==== In file included from vdagent/vdagent.cpp:18:0: ./common/vdcommon.h:51:0: warning: "_ftime_s" redefined #define _ftime_s(timeb) _ftime(timeb) ^ In file included from /usr/x86_64-w64-mingw32/sys-root/mingw/include/sys/timeb.h:124:0, =====
2014-12-30vdcommon.h: add comment about OLDMSVCRTUri Lublin1-0/+17
2014-12-30vdagent::handle_max_clipboard fix vd_printf formatUri Lublin1-2/+2
Using unsigned long to print a size_t.
2014-12-30vdagent: as_user: reorder initialization to make mingw-gcc happyUri Lublin1-2/+2
Fixes compiler warning that starts with: In file included from vdagent/as_user.cpp:19:0: vdagent/as_user.h: In constructor 'AsUser::AsUser(DWORD)': vdagent/as_user.h:35:10: warning: 'AsUser::_started' will be initialized after [-Wreorder] bool _started;
2014-12-30Fix compiler warning (missing backslash in FileXfer::handle_start)Uri Lublin1-1/+1
Visual Studio complains: vdagent\file_xfer.cpp(85) : warning C4129: '%' : unrecognized character escape sequence Replace "%s\%s" with "%s\\%s"
2014-11-13Fix g_key_get_string() failure when string contains '['Cody Chan1-1/+1
In vd_agent/file_xfer.cpp is implemented a simple g_key_get_string, but when dragging a file with a name containing '[' (like te[st.txt), it will fail. From source code, >next_group_pos = strstr(group_pos + strlen(group_pfx), "["); > if (next_group_pos && key_pos > next_group_pos) return false; we know that it tries to find the end of current group by '[' label, if we drag a file named te[st.txt, the key_string will be like: [vdagent-file-xfer] name=te[st.txt size=10 so, it will fail when meta parsing and returns the VD_AGENT_FILE_XFER_STATUS_ERROR message. Here's the elegant method Christophe proposed and test ok, thanks to him again!
2014-11-13Fix dragging of files with CJK characters in nameCody Chan1-1/+13
I submitted a patch several months ago about this issue, here http://lists.freedesktop.org/archives/spice-devel/2014-February/016158.html I check it again, and find that the value of g_key_file_to_data(keyfile,...) is always utf-8, for the value of g_uri_list_extract_uris() is utf8 urlencode. So the display problem is caused by vd_agent, but how it displays depends on the language of system, the following two screenshots show the difference: http://int64ago-tmp.qiniudn.com/guest-Chinese.png http://int64ago-tmp.qiniudn.com/guest-English.png
2014-06-19Don't refresh displays config when updatingMarc-André Lureau1-1/+10
wnd_proc() is called during ChangeDisplaySettings(), when handling monitors config. However, calling get_displays() will overwrite the desired config. So, while updating from 1 to 4 enabled monitors, when the 2nd monitor config is enabled, the current config is read, and overwrite the rest of the config, so first time only 2nd monitor is enabled, second time, 3rd monitor etc. https://bugzilla.redhat.com/show_bug.cgi?id=1111144
2014-06-19Learn to build spice-vdagent MSI installerMarc-André Lureau3-1/+130
2014-03-09vdagent: clipboard: Add VD_AGENT_CAP_MAX_CLIPBOARD supportUri Lublin2-0/+24
Do not send clipboard data bigger than last received VDAgentMaxClipboard. If a larger amount of data needs to be transferred between client and guest, a different mechanism should be used, not clipboard. The spice-protocol git-submodule is updated to include VD_AGENT_MAX_CLIPBOARD and related definitions.
2014-03-09vdagent: clipboard: GlobalUnlock on handle_request failureUri Lublin1-4/+14
Moved clipboard definition to the beginning of the function, as mingw-gcc complains about gotos that jump over definitions.
2013-11-13Makefile.am: add INCLUDES to AM_CPPFLAGSUri Lublin1-3/+5
Fixes the following autoreconf (automake) warning: Makefile.am:6: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
2013-11-13Makefile.am: tabifyUri Lublin1-2/+2
2013-11-13vdagent: file_xfer: make g_key_get_string saferUri Lublin2-7/+21
By providing the size of the destination string buffer.
2013-11-13vdagent: file-xfer: make user desktop the target directoryUri Lublin1-1/+1
Before, the target directory was a public one (for all users), as file creation was not done with user privileges. Now that the file is created with user privileges, it's better to make the user desktop the target directory.
2013-11-13file_xfer: create file with user privilegesUri Lublin1-0/+7
2013-11-13vdagent: add as_user to run tasks with user privilegesUri Lublin4-0/+121
The class calls Impersonate upon begin(), and Revert upon end() or destruction. The user is the current user that is logged in. create mode 100644 vdagent/as_user.cpp create mode 100644 vdagent/as_user.h
2013-08-26Update NEWS for 0.7.2 releaseChristophe Fergeau1-0/+5
2013-07-17Remove usage of more _s functionsMarc-André Lureau2-5/+14
Even before this change, it should have handled error conditions. We'd be better off allocating those strings and failing on io op later on.
2013-07-17Fix cast BOOL->PVOID warningMarc-André Lureau1-1/+1
vdagent/display_setting.cpp:469:50: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] if (!SystemParametersInfo(action, 0, (PVOID)param, 0)) {
2013-07-17Fix wrong size_t printf formatMarc-André Lureau1-1/+1
vdagent/desktop_layout.cpp:121:763: warning: format '%u' expects argument of type 'unsigned int', but argument 8 has type 'std::vector<DisplayMode*>::size_type {aka long long unsigned int}' [-Wformat=]
2013-07-17Replace sscanf_s by sscanfMarc-André Lureau1-2/+2
The _s functions need a recent msvcrt version, not shipped in XP by default. Furthermore, it appears that their sscanf_s usage was missing the extra buffer size argument.
2013-07-17Add suggested parenthesesMarc-André Lureau1-1/+1
vdagent/vdagent.cpp: In member function 'void VDAgent::on_clipboard_grab()': vdagent/vdagent.cpp:951:52: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
2013-07-17Fix task could be used uninitializedMarc-André Lureau1-6/+10
2013-07-17Fix invalid print format for uint64_t valuesMarc-André Lureau1-2/+6
format '%lu' expects argument of type 'long unsigned int', but argument 9 has type 'uint64_t
2013-07-17Fix wrong DWORD print fmtMarc-André Lureau2-3/+3
format '%u' expects argument of type 'unsigned int', but argument 8 has type 'DWORD
2013-07-17dos2unixMarc-André Lureau2-35/+35
2013-07-17Update spice-protocolMarc-André Lureau1-0/+0
2013-06-27vdagent: add support for client -> guest file transfersArnon Gilboa5-0/+258
rhbz#956146
2013-06-27cleanup dispatch_message()Arnon Gilboa1-12/+11
2013-06-20vdagent: advertise CRLF line-endingArnon Gilboa1-0/+1
rhbz#872252
2013-05-14Update spice-protocol submodule to 0.12.5Christophe Fergeau1-0/+0
This is needed to get the definition of VD_AGENT_CLIENT_DISCONNECTED
2013-05-12vdagent: protect against NULL entry in _displaysUri Lublin2-5/+11
rhbz#958051 It may be that a _displays entry will be NULL. I encountered it when running with multiple QXL devices, for one of which the driver failed to load since it was "out of resources". Iterations over _displays should handle that case. We found four such iterations, and fixed them in this patch.
2013-05-09vdagent: drop clipboard received after timeoutArnon Gilboa1-3/+10
rhbz #951618
2013-05-09vdagent: add support for VD_AGENT_CLIENT_DISCONNECTEDArnon Gilboa1-0/+4
vdagent is stopped, so a new instance is to be launched by vdservice. imho, this seems simpler than cleaning agent in/out msg state and reseting the vio-serial device to cleanup pending msgs. rhbz #956133
2013-05-09vdagent: support sparse monitors configArnon Gilboa1-0/+6
rhbz #953973
2013-04-24build-sys: fix mingw buildMarc-André Lureau2-0/+7
2013-04-24Revert "Refresh monitor config only when needed"Marc-André Lureau1-1/+3
This reverts commit 67c1bcf49367d1726033b298a8ab016b4e22cf23. Also add a comment why the refresh is necessary there. The original issue, reentering call, doesn't seem reproducible... https://bugzilla.redhat.com/show_bug.cgi?id=912793
2013-04-24Try harder to enable monitorsMarc-André Lureau1-9/+26
0ba6e2936 was trying to fix CreateDC() failing when the monitor is disabled, unfortunately, enabling monitor with an arbitrary resolution may still fail (the previous resolution, or the current one). This patch address the issue by first trying the current resolution, and falling back to a well-known resolution. This causes a temporary client resolution change (bad), which is immediately adjusted to the arbitrary resolution. We may want to improve agent->driver communication of arbitrary resolution before the driver is loaded, perhaps using registry or via the spice server. Any of these solution will unfortunately take some more time which we are missing. https://bugzilla.redhat.com/show_bug.cgi?id=922394 (seem to solve related bugs, like mouse offset, or flashing monitors)
2013-04-22vdservice: add quotes to service pathArnon Gilboa1-2/+6
for the case path contains a space, see CreateService() doc: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682450.aspx rhbz #918635