perl5125delta - perl v5.12.5 的新功能
本文檔說明 5.12.4 和 5.12.5 版本之間的差異。
如果您要從較早的版本(例如 5.12.3)升級,請先閱讀 perl5124delta,其中說明了 5.12.3 和 5.12.4 之間的差異。
編碼
解碼_xs n 位元組堆疊溢位 (CVE-2011-2939)編碼
中的錯誤可能會在某些輸入中導致堆疊溢位。此問題已修正。此錯誤由 Robert Zacek 回報。
File::Glob::bsd_glob()
記憶體錯誤與 GLOB_ALTDIRFUNC (CVE-2011-2728)使用不支援的旗標 GLOB_ALTDIRFUNC 呼叫 File::Glob::bsd_glob
會導致存取違規或區段錯誤。接受外部來源旗標值的 Perl 程式可能會使自己暴露於拒絕服務或任意程式碼執行攻擊。目前沒有已知的實際攻擊。此問題已透過明確停用所有不支援的旗標並將未使用函式指標設定為 null 來修正。此錯誤由 Clément Lecigne 回報。
編寫不良的 perl 程式碼,允許攻擊者指定 perl 的 'x' 字串重複運算子的計數,可能會導致記憶體耗盡的拒絕服務攻擊。5.15.5 之前的 perl 版本中的錯誤可能會將其升級為堆疊緩衝區溢位;搭配 2.16 之前的 glibc 版本,可能會允許執行任意程式碼。
此問題已修正。
沒有任何變更會故意與 5.12.4 不相容。如果存在任何不相容變更,它們是錯誤,歡迎回報。
B::Concise 不再會在使用 -tree 選項時產生混亂的輸出 [perl #80632]。
已修正 Perl 5.8.8 中引入的回歸,導致 charnames::viacode(0)
傳回 undef
,而不是字串 "NULL" [perl #72624]。
請參閱 "安全性"。
請參閱 "安全性"。
upper
函式的文件現在實際上寫的是 "upper",而不是 "lower"。
Module::CoreList 已更新至版本 2.50_02,以新增此版本的資料。
perlebcdic 文件包含一個有用的表格,可在 tr///
中使用,以在 EBCDIC 和 Latin1/ASCII 之間轉換。很不幸的是,表格與其描述相反。此問題已修正。
使用者定義大小寫對應 部分有一些錯誤的標記和不清晰的句子,導致部分內容無法閱讀。此問題已修正。
此文件已修正,以考量非 ASCII 平台。
chop
現在能正確處理 "\x{7fffffff}" 以上的字元 [perl #73246]。
($<,$>) = (...)
在 5.12.0 中停止正常運作。它應該執行單一 setreuid()
呼叫,而不是分別呼叫 setruid()
和 seteuid()
。因此,它無法正常運作。此問題已修正 [perl #75212]。
修正 kill() 的回歸,當使用比對變數作為要終止的處理程序 ID 時 [perl #75812]。
UNIVERSAL::VERSION
不再洩漏記憶體。它在 Perl 5.10.0 中開始洩漏。
C 層級的 my_strftime
函式不再洩漏記憶體。這修正了 POSIX::strftime
中的記憶體洩漏 [perl #73520]。
如果在第一次呼叫 caller
之後將 @DB::args
指定給予,則 caller
從 DB 套件呼叫時不再洩漏記憶體。 Carp 會觸發此錯誤 [perl #97010]。
當字串在內部以 UTF8 編碼時,傳遞給 index
的偏移量超出字串結尾不再導致恐慌 [perl #75898]。
正規表示式中 (?{...})
區塊的語法錯誤不再導致恐慌訊息 [perl #2353]。
Perl 5.10.0 引進了一些錯誤的邏輯,導致在封裝範本中間的「U*」等於「U0」,如果輸入字串為空。這已經修復了 [perl #90160]。
@_
在標量或空內容中呼叫時,split() 不再修改 @_
。在空內容中,它現在會產生「無效使用 split」警告。這實際上是 perl 5.12.0 引進的變更,但從該版本的 perl5120delta 中遺漏了。
Perl 5.12.5 代表自 Perl 5.12.4 以來約 17 個月的開發,包含來自 18 位作者的 64 個檔案中約 1,900 行的變更。
Perl 持續蓬勃發展進入其第三個十年,這要歸功於活躍的使用者和開發人員社群。已知以下人員貢獻了成為 Perl 5.12.5 的改進
Andy Dougherty、Chris 'BinGOs' Williams、Craig A. Berry、David Mitchell、Dominic Hargreaves、Father Chrysostomos、Florian Ragwitz、George Greer、Goro Fuji、Jesse Vincent、Karl Williamson、Leon Brocard、Nicholas Clark、Rafael Garcia-Suarez、Reini Urban、Ricardo Signes、Steve Hay、Tony Cook。
以上清單幾乎可以確定不完整,因為它是從版本控制記錄自動產生的。特別是,它不包含向 Perl 錯誤追蹤器報告問題的(非常感謝的)貢獻者的姓名。
此版本中包含的許多變更源自於 Perl 核心包含的 CPAN 模組。我們感謝整個 CPAN 社群協助 Perl 蓬勃發展。
如需 Perl 所有歷史貢獻者的更完整清單,請參閱 Perl 原始碼發行中的 AUTHORS 檔案。
如果您發現您認為是錯誤的問題,您可能會查看最近張貼到 comp.lang.perl.misc 新聞群組的文章和 http://rt.perl.org/perlbug/ 上的 perl 錯誤資料庫。在 Perl 首頁 http://www.perl.org/ 上也可能有資訊。
如果您相信您有一個未回報的錯誤,請執行您的版本中包含的 perlbug 程式。務必將您的錯誤精簡為一個微小但足夠的測試案例。您的錯誤回報連同 perl -V
的輸出將會傳送至 perlbug@perl.org,供 Perl 移植團隊分析。
如果你回報的錯誤有安全影響,不適合發送到公開儲存的郵件清單,請寄送到 perl5-security-report@perl.org。這會指向一個封閉訂閱、未儲存的郵件清單,其中包含所有核心提交者,他們可以協助評估問題的影響、找出解決方案,並協助協調發布修補程式,以減輕或修復所有支援 Perl 的平台上的問題。請僅將此地址用於 Perl 核心中的安全問題,而不是用於 CPAN 上獨立發布的模組。
變更 檔案說明如何查看已變更內容的詳盡詳細資料。
安裝 檔案說明如何建置 Perl。
自述 檔案說明一般事項。
藝術 和 複製 檔案說明著作權資訊。