「暗号化」の失敗をポータブルで確認する方法は?

「暗号化」の失敗をポータブルで確認する方法は?

残念ながら、一部のシステムはcrypt以下で統合されています。libxcrypt関数が失敗した場合は、NULLポインタを返す代わりに始まる「失敗フラグ」文字列を返します**0

その特定の文字列が保証されるかどうかは不明です。私たちが見るときlibxcryptコードでは、この機能をコンパイル時にオフにできるようです。この場合、API関数は*下位レベルのルーチンの先行文字のみを確認し、それをnullとして返します。これは、アプリケーションコードが同じことを実行し、特定の*トークンを想定してはいけないことを意味します。

私の質問は、他cryptの実装がどんな状況でもリードが返されないことを保証することです*(失敗した場合を除いて模倣することによって)。libxcrypt? )

これにより:

if (ret != NULL && ret[0] != '*') {
  /* we have a valid result */
} else {
  /* crypt failed */
}

素敵ですか?それともcrypt私たちが使っているものを区別する必要がありますか?libxcrypt一つ、この場合のみ確認してもよろしいですか?

errno(1つの考え:0に設定して*に変更すると、先行が失敗したと結論付けることもできます。)errnoEINVAL

関連情報