2012-10-18 29 views

回答

5

緩衝區溢出一般都不會當你將數據放入一個NSString(或NSMutableString)的一個問題,因爲當你創建一個NSString,你必須告訴它你有多少數據給它,它會自動分配足夠私人存儲來保存你給它的東西。只需堅持已發佈的API,不要嘗試任何詭計,如從UTF8String返回的指針丟棄const並通過指針寫入。

注意NSMutableData,不像NSMutableString,提供mutableBytes消息,它返回一個指針,你可以寫內存。所以如果你使用這個API,你必須小心緩衝區溢出。

對於格式化字符串,您只需遵循該文檔中的建議。例如,不要將來自不可信源的數據作爲格式參數傳遞,或者甚至作爲格式參數的一部分傳遞。通常你的格式字符串應該是字符串,或者應該從NSLocalizedString返回。

還有的NSString沒有「安全」的版本。