2011-11-10 12 views
2

ちょうどこれに気付き、言及したいと思いました。誰もがこの問題を見ている場合、および/またはそれは、それが認識されるであろう固定得るために保たれているところ...NSData + Base64.mのinitWithBase64EncodedStringでの問題

ルーチン

outbuf [2] = ((inbuf[2] & 0x03) << 6) | (inbuf[3] & 0x3F); 

の行はINBUFはわずか3インデックスを持っているので、問題があります。私はまだコードを詳述していない、近い将来にする必要があります。これは修正されているが、私が見たコードのすべてのバージョンでこの問題が発生しているかどうかを確認するだけです。事前

答えて

1

unsigned char inbuf[3], outbuf[4]; 

おかげで、あなたが32ビットのシステム上にある原因それがクラッシュしていないので、それはあなたがそこからint型とスプリットを与えるだろう[4]

INBUFそれを作ります。

+0

私はalgを見る時間がありませんでした、これはalgのために正しいのですか?私は32/64ビットシステムにはおそらく大丈夫だと思うが、これが正しいかどうかを確認する必要があります。私はしばらく時間をとって、これが大丈夫だろうと自分自身に証明しようとします。 – ort11

+0

4バイトをその配列に読み込みます。アイテムは4バイトのintになるため、不正な結果を生成することはなく、int型の整数がそのサイズで指定されているため、範囲外のインデックスは作成されません。 警告を削除するには、inbuf [4]にinbufを調整するだけで、outbufに1対1の一致があるようにします。お役に立てれば! – Nico

関連する問題