dest_bufferバッファに8つの英数字記号を書き込む際に問題があります。1つのバッファから別のバッファにキャストおよびコピーする際にスタックが壊れる
私はcharからbuffを16進数に変換したいのですが、 の異なるdest_bufferバッファの値に値を格納します。例えば
:
バフ[0] = 58 [0] = '3' とdest_buffer dest_buffer私を与えるべきである[1] = '' 等が8つの文字に到達します。
srcはchar [8 * sizeof(int)+1]で、buffは同じです。 残念ながら、私はこれだけの出力を持っている:
2dbb771
*** stack smashing detected ***: ./a.out terminated
[1] 9843 abort (core dumped) ./a.out
これは私が何かが欠けていないんだけど、私は何を知っていない、どちらもどこ知っている私は
for (i = 0; i < 4*sizeof(int); ++i)
{
snprintf (
&dest_buff[i*sizeof(int)*2],
sizeof(int)*2,
"%x",
*(int*)&buff[i * sizeof(int)]
) ;
}
仕事をするために使用したループであります、 私のお手伝いができますか? おかげ
EDIT 1:ここでは
は、より正確には、私のコードの別の部分である。この後
int i, rndf ;
char buff[4*sizeof(int)+1];
rndf = open("/dev/urandom", O_RDONLY) ;
if(read (rndf, buff, 4*sizeof(int)) < 0)
{
fprintf (stderr, "%s\n", "An error occured while reading urandom") ;
exit (EXIT_FAILURE) ;
}
close(rndf) ;
はchar buff[4*sizeof(int)+1];
があるので、あなたは腐敗を積み重ねてきたループ
スタックオーバーフローの可能性がありますか? 'dest_buff'とは何ですか?そのサイズは? – tilz0R
@ tilz0R私は推測しますが、私はどこに、なぜ、私はここにこだわっている見つけることができませんでした – Default
私たちのすべてのコードを表示するだけのループではありません。どのように初期化されますか。 – tilz0R