OSDN Git Service

Fix bugs of routines for double click.
[ffftp/ffftp.git] / remote.c
index cab68b0..6ee947c 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -36,7 +36,9 @@
 #include <string.h>\r
 #include <mbstring.h>\r
 #include <time.h>\r
-#include <winsock.h>\r
+// IPv6対応\r
+//#include <winsock.h>\r
+#include <winsock2.h>\r
 #include <windowsx.h>\r
 #include <commctrl.h>\r
 \r
@@ -241,7 +243,6 @@ static int DoPWD(char *Buf)
                        strcpy(Buf, Tmp);\r
                        ReplaceAll(Buf, '\\', '/');\r
                        ChangeSepaRemote2Local(Buf);\r
-                       ChangeFnameRemote2Local(Buf, FMAX_PATH);\r
                }\r
                else\r
                        Sts = FTP_ERROR*100;\r
@@ -902,6 +903,8 @@ int ReadReplyMessage(SOCKET cSkt, char *Buf, int Max, int *CancelCheckWork, char
                        iContinue = NO;\r
                        iRetCode = ReadOneLine(cSkt, Tmp, ONELINE_BUF_SIZE, CancelCheckWork);\r
 \r
+                       // 文字化け対策\r
+                       ChangeFnameRemote2Local(Tmp, ONELINE_BUF_SIZE);\r
                        SetTaskMsg("%s", Tmp);\r
 \r
                        if(Buf != NULL)\r
@@ -1324,13 +1327,21 @@ int ChangeFnameRemote2Local(char *Fname, int Max)
        char *Buf;\r
        char *Pos;\r
        CODECONVINFO cInfo;\r
+       // バッファ上書きバグ対策\r
+       char *Buf2;\r
 \r
        Sts = FFFTP_FAIL;\r
        if((Buf = malloc(Max)) != NULL)\r
        {\r
+       // バッファ上書きバグ対策\r
+       if((Buf2 = malloc(strlen(Fname) + 1)) != NULL)\r
+       {\r
                InitCodeConvInfo(&cInfo);\r
                cInfo.KanaCnv = NO;                     //AskHostNameKana();\r
-               cInfo.Str = Fname;\r
+               // バッファ上書きバグ対策\r
+//             cInfo.Str = Fname;\r
+               strcpy(Buf2, Fname);\r
+               cInfo.Str = Buf2;\r
                cInfo.StrLen = strlen(Fname);\r
                cInfo.Buf = Buf;\r
                cInfo.BufSize = Max - 1;\r
@@ -1432,8 +1443,13 @@ int ChangeFnameRemote2Local(char *Fname, int Max)
 //                             strcpy(Pos, Buf);\r
 //                             break;\r
                }\r
-               free(Buf);\r
+               // バッファ上書きバグ対策\r
+               free(Buf2);\r
                Sts = FFFTP_SUCCESS;\r
+               }\r
+               free(Buf);\r
+               // バッファ上書きバグ対策\r
+//             Sts = FFFTP_SUCCESS;\r
        }\r
        return(Sts);\r
 }\r
@@ -1456,13 +1472,21 @@ int ChangeFnameLocal2Remote(char *Fname, int Max)
        char *Buf;\r
        char *Pos;\r
        CODECONVINFO cInfo;\r
+       // バッファ上書きバグ対策\r
+       char *Buf2;\r
 \r
        Sts = FFFTP_FAIL;\r
        if((Buf = malloc(Max)) != NULL)\r
        {\r
+       // バッファ上書きバグ対策\r
+       if((Buf2 = malloc(strlen(Fname) + 1)) != NULL)\r
+       {\r
                InitCodeConvInfo(&cInfo);\r
                cInfo.KanaCnv = AskHostNameKana();\r
-               cInfo.Str = Fname;\r
+               // バッファ上書きバグ対策\r
+//             cInfo.Str = Fname;\r
+               strcpy(Buf2, Fname);\r
+               cInfo.Str = Buf2;\r
                cInfo.StrLen = strlen(Fname);\r
                cInfo.Buf = Buf;\r
                cInfo.BufSize = Max - 1;\r
@@ -1587,8 +1611,13 @@ int ChangeFnameLocal2Remote(char *Fname, int Max)
 //                             strcpy(Pos, Buf);\r
 //                             break;\r
                }\r
-               free(Buf);\r
+               // バッファ上書きバグ対策\r
+               free(Buf2);\r
                Sts = FFFTP_SUCCESS;\r
+               }\r
+               free(Buf);\r
+               // バッファ上書きバグ対策\r
+//             Sts = FFFTP_SUCCESS;\r
        }\r
        return(Sts);\r
 }\r