4

次の場所で安全な文字列の使用について読んでいます

https://www.securecoding.cert.org/confluence/pages/viewpage.action?pageId=5111861

以下のように記載されています。

SafeStr 文字列を適切に使用すると、これらのエラーの多くを排除し、レガシー コードとの下位互換性も確保できます。

私の質問は、作成者が「レガシー コードにも下位互換性を提供する」とはどういう意味かということです。? 例を挙げて説明してほしい。

お時間をいただきありがとうございます。

4

2 に答える 2

3

これは、プレーンな null で終了する char 配列を期待する標準の libc (およびその他) の関数が、これらの s でも機能することを意味しますSafeStr。これはおそらく、文字列の先頭から負のオフセット (またはその他のトリック) に制御構造を配置することによって実現されます。

例: strcmp() printf()etc は、SafeStr によって返される文字列に対して直接使用できます。

対照的に、非常に「スマート」で動的な C 用の文字列ライブラリはにもありますが、これらの文字列は「古い学校」の関数に変換しないと送信できません。

于 2013-04-09T14:28:06.840 に答える
3

そのページから:

ライブラリは、char * と完全に互換性のある safestr_t 型に基づいています。これにより、safestr_t 構造体を char * にキャストできます。

char *これは、またはconst char *ポインターを取るすべての既存のコードとの下位互換性です。

于 2013-04-09T14:29:53.193 に答える