]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
Add check for vlnk file suffix in save as
authorlongpanda <admin@ventoy.net>
Thu, 17 Feb 2022 02:49:56 +0000 (10:49 +0800)
committerlongpanda <admin@ventoy.net>
Thu, 17 Feb 2022 02:49:56 +0000 (10:49 +0800)
Vlnk/src/main_windows.c
Vlnk/vs/VentoyVlnk/Release/VentoyVlnk.exe

index ba195f26fe30c36e7161ce19ce118a34ce5b7c18..34f75483a99fedd59204184a6b0ddec97aba88f0 100644 (file)
@@ -37,6 +37,7 @@ typedef enum MSGID
     MSGID_VLNK_POINT_TO,\r
     MSGID_VLNK_NO_DST,\r
     MSGID_FILE_NAME_TOO_LONG,\r
+    MSGID_INVALID_SUFFIX,\r
 \r
     MSGID_BUTT\r
 }MSGID;\r
@@ -61,6 +62,7 @@ const WCHAR *g_msg_cn[MSGID_BUTT] =
     L"´Ë vlnk ÎļþÖ¸Ïò ",\r
     L"´Ë vlnk Ö¸ÏòµÄÎļþ²»´æÔÚ£¡",\r
     L"Îļþ·¾¶Ì«³¤£¡",\r
+    L"·Ç·¨µÄvlnkÎļþºó׺Ãû!",\r
 };\r
 const WCHAR *g_msg_en[MSGID_BUTT] =\r
 {\r
@@ -81,6 +83,7 @@ const WCHAR *g_msg_en[MSGID_BUTT] =
     L"The vlnk file point to ",\r
     L"The file pointed by the vlnk does NOT exist!",\r
     L"The file full path is too long!",\r
+    L"Invalid vlnk file suffix!",\r
 };\r
 \r
 const WCHAR **g_msg_lang = NULL;\r
@@ -382,6 +385,38 @@ static BOOL VentoyGetSaveFileName(HWND hWnd, WCHAR *szFile)
     return GetSaveFileName(&ofn);\r
 }\r
 \r
+static BOOL IsSupportedVlnkSuffix(WCHAR *FileName)\r
+{\r
+    int len;\r
+\r
+    len = lstrlen(FileName);\r
+\r
+    if (len > 9)\r
+    {\r
+        if (lstrcmp(FileName - 9, L".vlnk.iso") == 0 ||\r
+            lstrcmp(FileName - 9, L".vlnk.img") == 0 || \r
+            lstrcmp(FileName - 9, L".vlnk.wim") == 0 || \r
+            lstrcmp(FileName - 9, L".vlnk.vhd") == 0 || \r
+            lstrcmp(FileName - 9, L".vlnk.efi") == 0 || \r
+            lstrcmp(FileName - 9, L".vlnk.dat") == 0)\r
+        {\r
+            return TRUE;\r
+        }\r
+    }\r
+\r
+\r
+    if (len > 10)\r
+    {\r
+        if (lstrcmp(FileName - 10, L".vlnk.vhdx") == 0 ||\r
+            lstrcmp(FileName - 9, L".vlnk.vtoy") == 0)\r
+        {\r
+            return TRUE;\r
+        }\r
+    }\r
+\r
+    return FALSE;\r
+}\r
+\r
 static int CreateVlnk(HWND hWnd, WCHAR *Dir, WCHAR *InFile, WCHAR *OutFile)\r
 {\r
     int i;\r
@@ -542,8 +577,17 @@ static int CreateVlnk(HWND hWnd, WCHAR *Dir, WCHAR *InFile, WCHAR *OutFile)
                 wcscpy_s(szFile, MAX_PATH, DstFullPath);\r
                 if (VentoyGetSaveFileName(hWnd, szFile))\r
                 {\r
-                    wcscpy_s(DstFullPath, MAX_PATH, szFile);\r
-                    SetOutFile = TRUE;\r
+                    if (IsSupportedVlnkSuffix(szFile))\r
+                    {\r
+                        wcscpy_s(DstFullPath, MAX_PATH, szFile);\r
+                        SetOutFile = TRUE;\r
+                    }\r
+                    else\r
+                    {\r
+                        VtoyMessageBox(hWnd, g_msg_lang[MSGID_INVALID_SUFFIX], g_msg_lang[MSGID_ERROR], MB_OK | MB_ICONERROR);\r
+                        LogA("Invalid vlnk suffix\n");\r
+                        goto end;\r
+                    }\r
                 }\r
                 else\r
                 {\r
@@ -577,6 +621,7 @@ static int CreateVlnk(HWND hWnd, WCHAR *Dir, WCHAR *InFile, WCHAR *OutFile)
             VtoyMessageBox(hWnd, g_msg_lang[MSGID_CREATE_FILE_ERR], g_msg_lang[MSGID_ERROR], MB_OK | MB_ICONERROR);\r
         }\r
 \r
+        end:\r
         free(Buf);\r
     }\r
 \r
index 4e37e435c2ed61067fac1a026baeb5213237e6ae..ac8bfa3c2fa1e8faafa4af353ce9bd728bb98794 100644 (file)
Binary files a/Vlnk/vs/VentoyVlnk/Release/VentoyVlnk.exe and b/Vlnk/vs/VentoyVlnk/Release/VentoyVlnk.exe differ