NW 55 - PLookupName のバグに対する回避方法
(1998 年 7 月 20 日更新)
Q: Open Transport が NBP の PLookupName 呼び出しを処理する方法にバグがあることに気づきました。この問題を回避するにはどうすればいいですか。
A: 詳しく説明すると、OpenTransport (v 1.3 まで) が NBP の PLookupName 呼び出しを処理する方法にはバグがあり、Open Transport はルックアップバッファの末尾を超えて最大 2 バイトまでデータを書き込むことがあります。この問題は PLookupName 呼び出しにだけ関係し、Open Transport の対応する呼び出し (OTLookupName) では発生しません。
このバグの望ましい解決方法は、時代遅れになった PLookupName 呼び出しではなく、Open Transport の OTLookupName 呼び出しを使用するようにネットワーキングコードを更新することです。OTLookupName は Mac OS X でもサポートされる予定です。一方、PLookupName だけでなく、その他の AppleTalk Manager 呼び出しは Mac OS X ではサポートされなくなります。
もう 1 つの解決方法は、次のコードに示すように、NBPretBuffPtr によってポイントされるバッファの実際のサイズよりも 2 バイト少ない値を NBPretBuffSize パラメータに設定することです。この解決方法は Open Transport のすべてのリリースで正常に動作し、Open Transport の側でこの問題が解決された場合にも、特に影響を受けないはずです。
char buffer[1024];
...
gPBLkUP->myMPP.NBPretBuffSize = sizeof(buffer) - 2;
gPBLkUP->myMPP.NBPretBuffPtr = &buffer;
result = PLookupName((MPPParamBlock *) &myMPP, ...);
-- Rich Kubota
-- Revised by Rich Kubota
Worldwide Developer Technical Support
|