電子書籍の厳選無料作品が豊富!

メールソフトで、openssl を使って、
ヤフーメールにPOP接続して、800個ほど溜まっているメールを取り出そうとしています。

メッセージID を確認しながら重複しないように取り出そうとしています。
700個ほど取り出したのですが、
その後、頻繁に

Buffer overrun, data truncated

のメッセージが出て、ストップします。

このメッセージはopenssl が作成しているのでしょうか?
また、原因、対策はなんでしょうか?

A 回答 (2件)

http://oshiete.goo.ne.jp/qa/8198656.html
↑を見る限り自分でメッセージを出しているのでは?
その通りであれば、原因や対策も見えてくるはずです。
    • good
    • 0
この回答へのお礼

// Is there enough room in our buffer for the new data?
if ((nLen + nBytesRead) > sizeof(szResponse)){
MessageBox("Buffer overrun, data truncated","Error",MB_OK);
nLen = 0;
szResponse[0] = '\0';
return;
}

他のところばかり探していて見つかりませんでした。
szResponse
を大きくしてみます。

ありがとうございました。

お礼日時:2013/08/20 08:52

>他のところばかり探していて見つかりませんでした。


>szResponse
>を大きくしてみます。

回答した時に想定したパターンについては…もう忘れてしまいましたが……。
・nBytesReadがsizeof(szResponse)より大きい場合にエラーになる。
・nLenが不正な値になる場合がある。
というパターンがありますかね。
# たぶん回答した時のは上側の方かと思われますが…。

>if (strlen(cp))
が偽だった場合にnLenがどうなるか…についてはちゃんと調べてありますか?
    • good
    • 0
この回答へのお礼

ありがとうございます。

1箇所変更するといろいろ不具合が出ています。
方針は、sqlite を使うことにしました。

メモリーの関係だと思いますがいろいろ問題が起きています。
少しずつ修正しています。

お礼日時:2013/08/20 12:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!