OSDN Git Service

改行文字やタブ文字を名前に含むファイルを含む書庫を開こうとした場合に警告する機能を追加。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Thu, 11 Nov 2010 14:04:16 +0000 (14:04 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Thu, 11 Nov 2010 14:04:16 +0000 (14:04 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@433 9df91469-1e22-0410-86e7-ea8537beb833

src/lychee/frm_main.cpp

index 31d304a..3a02ef6 100644 (file)
@@ -410,6 +410,7 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
                                piInfo.fiInfo.fnFileName = wxFileName(piInfo.fiInfo.szStoredName);\r
                        }\r
 \r
+                       // セキュリティチェック。\r
                        // ルート記号を削除。\r
                        wxString szPath = piInfo.fiInfo.fnFileName.GetPathWithSep(wxPATH_UNIX);\r
                        if (szPath.StartsWith(wxT("/")))\r
@@ -417,11 +418,20 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
                                piInfo.fiInfo.fnFileName = wxFileName(szPath.AfterFirst(wxT('/')), piInfo.fiInfo.fnFileName.GetFullName(), wxPATH_DOS);\r
                        }\r
 \r
-                       // ツリービューに反映。\r
-                       bool fDir = piInfo.fiInfo.dwAttribute & TPI_ATTRIBUTE_DIRECTORY ? true : false;\r
-                       TreeView_CheckNewerItem(this->tree_ctrl, idArcRoot, fDir ? piInfo.fiInfo.fnFileName.GetFullPath() : piInfo.fiInfo.fnFileName.GetPath(), true);\r
+                       // 改行文字/タブ文字などを削除。\r
+                       if (piInfo.fiInfo.szStoredName.Find(wxT('\r')) != wxNOT_FOUND\r
+                       ||  piInfo.fiInfo.szStoredName.Find(wxT('\n')) != wxNOT_FOUND\r
+                       ||  piInfo.fiInfo.szStoredName.Find(wxT('\t')) != wxNOT_FOUND)\r
+                       {\r
+                               wxString sz = piInfo.fiInfo.fnFileName.GetFullPath();\r
+                               sz.Replace(wxT("\r"), wxT(" "));\r
+                               sz.Replace(wxT("\n"), wxT(" "));\r
+                               sz.Replace(wxT("\t"), wxT(" "));\r
+                               piInfo.fiInfo.eDanger = TRUE;\r
+                               piInfo.fiInfo.fnFileName = wxFileName(sz);\r
+                               wxLogWarning(_("This archive may contain files whose name contains some special characters like CR(\\r), LF(\\n), Tab(\\t) and some problem would be happen if you extract these files. Don\'t extract these files carelessly.\nDanger file is:\n%s"), piInfo.fiInfo.fnFileName.GetFullPath().c_str());\r
+                       }\r
 \r
-                       // セキュリティチェック。\r
                        // DTV検査。\r
                        if (piInfo.fiInfo.fnFileName.GetPathWithSep(wxPATH_UNIX).Find(wxT("../")) != wxNOT_FOUND)\r
                        {\r
@@ -449,6 +459,10 @@ void MainFrame::OnArcOpen(wxCommandEvent& e)
                                }\r
                        }\r
 \r
+                       // ツリービューに反映。\r
+                       bool fDir = piInfo.fiInfo.dwAttribute & TPI_ATTRIBUTE_DIRECTORY ? true : false;\r
+                       TreeView_CheckNewerItem(this->tree_ctrl, idArcRoot, fDir ? piInfo.fiInfo.fnFileName.GetFullPath() : piInfo.fiInfo.fnFileName.GetPath(), true);\r
+\r
                        // ディレクトリ属性を含むものについては情報を保存しない。\r
                        if (fDir)\r
                        {\r