內容

名稱

perl5222delta - perl v5.22.2 的新功能

說明

此文件說明 5.22.1 版和 5.22.2 版之間的差異。

如果您要從較早的版本(例如 5.22.0)升級,請先閱讀 perl5221delta,其中說明了 5.22.0 和 5.22.1 之間的差異。

安全性

修正 Win32 路徑處理中的越界存取

這是 CVE-2015-8608。更多資訊請參閱 [GH #15067]

修正 canonpath() 中的 taint 遺失

這是 CVE-2015-8607。更多資訊請參閱 [GH #15084]

在呼叫 mkstemp(3) 之前設定正確的 umask

在 5.22.0 中,perl 開始在呼叫 mkstemp(3) 之前將 umask 設定為 0600,並在之後還原。這錯誤地告訴 open(2) 在套用給定模式之前從中移除擁有者讀取和寫入位元,而不是預期的只保留這些位元。

mkstemp(3) 中使用模式 0666 的系統(例如舊版本的 glibc)會建立權限為 0066 的檔案,不論目前的 umask 為何,都會保留世界讀取和寫入權限。

已透過改用 umask 0177 修正此問題。

[GH #15135]

避免在 Win32 crypt() 中存取未初始化的記憶體

已新增驗證,可偵測 salt 太短和 salt 中的無效字元。

[GH #15091]

移除重複的環境變數從 environ

先前,如果環境變數在 environ[] 中出現多次,%ENV 會包含該名稱的最後一個項目,而典型的 getenv() 會傳回第一個項目。我們現在確定 %ENV 包含與 getenv() 傳回的內容相同。

其次,我們現在從 environ[] 中移除重複項,因此如果在 %ENV 中設定具有該名稱的設定,我們不會將不安全的數值傳遞給子處理程序。

這是 CVE-2016-2381。

不相容變更

沒有任何變更故意與 Perl 5.22.1 不相容。如果存在任何變更,它們是錯誤,我們要求您提交報告。請參閱下方的 "回報錯誤"

模組和實用程式

已更新的模組和實用程式

文件

變更現有文件

perldiag

perlfunc

組態和編譯

平台支援

特定平台注意事項

Darwin

在 Darwin 上使用 -Dusecbacktrace 編譯 perl 現在又可以運作。

[GH #15245]

OS X/Darwin

在 OS X 上從 Terminal 編譯或測試時,同時啟用 -DDEBUGGING 和執行緒的編譯會失敗,並出現「恐慌:從錯誤的池中釋放」錯誤。這是因為 perl 內部管理環境與使用 libc setenv() 函式更新環境的 atfork 處理常式衝突所致。

perl 現在使用 setenv()/unsetenv() 來更新 OS X 上的環境。

[GH #14955]

ppc64el

ppc64el(Debian 中小端 PowerPC 的命名)的浮點格式現在可以正確偵測。

Tru64

已修正 t/porting/extrefs.t 中的測試失敗。

內部變更

已選取的錯誤修正

致謝

Perl 5.22.2 代表自 Perl 5.22.1 以來大約 5 個月的開發,並包含來自 24 位作者的 110 個檔案中約 3,000 行的變更。

不包括自動產生的檔案、文件和發行工具,大約有 1,500 行變更到 52 個 .pm、.t、.c 和 .h 檔案。

Perl 在其第三個十年中繼續蓬勃發展,這要歸功於一個充滿活力的使用者和開發人員社群。已知以下人員貢獻了成為 Perl 5.22.2 的改進

Aaron Crane、Abigail、Andreas König、Aristotle Pagaltzis、Chris 'BinGOs' Williams、Craig A. Berry、Dagfinn Ilmari Mannsåker、David Golden、David Mitchell、H.Merijn Brand、James E Keenan、Jarkko Hietaniemi、Karen Etheridge、Karl Williamson、Matthew Horsfall、Niko Tyni、Ricardo Signes、Sawyer X、Stevan Little、Steve Hay、Todd Rinaldo、Tony Cook、Vladimir Timofeev、Yves Orton。

以上清單幾乎肯定不完整,因為它是從版本控制記錄中自動產生的。特別是,它不包括向 Perl 錯誤追蹤器回報問題的(非常感謝的)貢獻者的姓名。

此版本中包含的許多變更源自 Perl 核心包含的 CPAN 模組。我們感謝整個 CPAN 社群協助 Perl 蓬勃發展。

如需取得所有 Perl 歷史貢獻者的完整清單,請參閱 Perl 原始碼發行版中的 AUTHORS 檔案。

回報錯誤

如果您發現您認為是錯誤的問題,您可以查看最近張貼至 comp.lang.perl.misc 新聞群組的文章,以及 https://rt.perl.org/ 上的 perl 錯誤資料庫。Perl 首頁 http://www.perl.org/ 上也可能會有相關資訊。

如果您認為您發現未回報的錯誤,請執行發行版本中包含的 perlbug 程式。務必將錯誤精簡成一個小巧但足夠的測試案例。您的錯誤回報,以及 perl -V 的輸出,將會傳送至 perlbug@perl.org,供 Perl 移植團隊分析。

如果您回報的錯誤具有安全性影響,不適合傳送至公開封存的郵件清單,請將其傳送至 perl5-security-report@perl.org。這會指向一個封閉訂閱的未封存郵件清單,其中包含所有核心提交者,他們將能夠協助評估問題的影響,找出解決方案,並協助協調在 Perl 受支援的所有平台上發布修補程式以減輕或修復問題。請僅將此地址用於 Perl 核心中的安全性問題,而非在 CPAN 上獨立發布的模組。

另請參閱

Changes 檔案,說明如何查看已變更內容的詳盡詳細資料。

INSTALL 檔案,說明如何建置 Perl。

README 檔案,提供一般資訊。

ArtisticCopying 檔案,提供版權資訊。