<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">Hi, as you can see, in vd_agent/file_xfer.cpp, it implemented the g_key_get_string,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">

but I find a problem, when dragging a file with a name containing '[' (like te[st.txt), it will be failed.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">

>From source code,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><div class="gmail_default">>next_group_pos = strstr(group_pos + strlen(group_pfx), "[");</div>

<div class="gmail_default">>    if (next_group_pos && key_pos > next_group_pos) return false;</div><div class="gmail_default">we know that it tries to find the end of current group by '[' label, </div>

<div class="gmail_default">if we drag a file like te[st.txt, the key_string many like:</div><div class="gmail_default"><div class="gmail_default">[vdagent-file-xfer]</div><div class="gmail_default">name=te[st.txt</div><div class="gmail_default">

size=10</div></div></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">so, it's failed when meta parsing and returns VD_AGENT_FILE_XFER_STATUS_ERRO message.</div>

<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">

I find a way to fix it, just replace '[' ']' with '<' '>' between group name,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">

for it's illegal for windows to create a file with a name containing '<'/'>'.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)"><br>
</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">And of course, both vd_agent and spice-gtk should be patched.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small;color:rgb(0,0,0)">

 </div><div class="gmail_default" style><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">---</font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif"> vdagent/file_xfer.cpp | 4 ++--</font></div>

<div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif"> 1 file changed, 2 insertions(+), 2 deletions(-)</font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif"><br>

</font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">diff --git a/vdagent/file_xfer.cpp b/vdagent/file_xfer.cpp</font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">index e402eb2..6998901 100644</font></div>

<div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">--- a/vdagent/file_xfer.cpp</font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">+++ b/vdagent/file_xfer.cpp</font></div>

<div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">@@ -188,13 +188,13 @@ bool FileXfer::g_key_get_string(char* data, const char* group, const char* key,</font></div><div class="gmail_default" style>

<font color="#000000" face="arial, helvetica, sans-serif">     char *group_pos, *key_pos, *next_group_pos, *start, *end;</font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">     unsigned len;</font></div>

<div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif"> </font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">-    snprintf(group_pfx, sizeof(group_pfx), "[%s]", group);</font></div>

<div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">+    snprintf(group_pfx, sizeof(group_pfx), "<%s>", group);</font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">     if (!(group_pos = strstr((char*)data, group_pfx))) return false;</font></div>

<div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif"> </font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">     snprintf(key_pfx, sizeof(key_pfx), "\n%s=", key);</font></div>

<div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">     if (!(key_pos = strstr(group_pos, key_pfx))) return false;</font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif"> </font></div>

<div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">-    next_group_pos = strstr(group_pos + strlen(group_pfx), "[");</font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">+    next_group_pos = strstr(group_pos + strlen(group_pfx), "<");</font></div>

<div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">     if (next_group_pos && key_pos > next_group_pos) return false;</font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif"> </font></div>

<div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">     start = key_pos + strlen(key_pfx);</font></div><div class="gmail_default" style><font color="#000000" face="arial, helvetica, sans-serif">-- </font></div>

</div><div><br></div>-- <br><div dir="ltr"><font color="#cfe2f3">Q</font><font color="#9fc5e8">S</font><font color="#6fa8dc">B</font><font color="#3d85c6">D</font><font color="#0b5394">T</font><font color="#073763">0</font><font color="#0c343d">R</font><font color="#134f5c">F</font><font color="#45818e">U</font><font color="#76a5af">i</font><font color="#a2c4c9">B</font><font color="#d0e0e3">G</font><font color="#d9ead3">U</font><font color="#b6d7a8">k</font><font color="#93c47d">9</font><font color="#6aa84f">N</font><font color="#38761d">I</font><font color="#274e13">F</font><font color="#7f6000">J</font><font color="#bf9000">J</font><font color="#f1c232">R</font><font color="#ffd966">V</font><font color="#ffe599">N</font><font color="#fff2cc">U</font><font color="#fce5cd">I</font><font color="#f9cb9c">E</font><font color="#f6b26b">9</font><font color="#e69138">G</font><font color="#b45f06">I</font><font color="#783f04">E</font><font color="#660000">N</font><font color="#990000">U</font><font color="#cc0000">U</font><font color="#e06666">0V</font><font color="#ea9999">V</font></div>


</div>