3

iPhone アプリ (iOS7) の送信プロセス中に、画面にエラーが表示されました。基本的に、非パブリック シンボル __strlcat_chk、strlcpy_chk を使用したと書かれています。strlcat と strlcpy は知っていますが、非パブリックである可能性はないと思います。Xcode5を使用しました。

また、プロジェクトで strlcat() と strlcpy() をクイック検索しましたが、使用していませんでした。アプリのアップローダにエラー画面が表示される

何が原因か考えてみてください。

[更新] 開発者アカウントからチケットを送信した後、実際に Apple から更新を受け取りました (開発者アカウントには 2 つの技術サポートが付属しています)。基本的に、Apple サポートは既知の問題であると私に言いました。Apple にアプリ名と ID 番号を伝えると、アプリがホワイトリストに登録されます。Apple が Go シグナルを出したら、送信検証プロセスを通過するのに問題はありません。

4

2 に答える 2

4

この理由は次のファイルにあります。

iOS 7.0/usr/include/secure/_string.h

問題の原因となっているコードは次のようです。

#if __has_builtin(__builtin___strlcat_chk) && __HAS_FIXED_CHK_PROTOTYPES #undef strlcat #define strlcat(dest, src, len) \ __builtin___strlcat_chk (dest, src, len, __darwin_obsz (dest)) #endif #endif /* __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 /
#endif /
__DARWIN_C_LEVEL >= __DARWIN_C_FULL */

これが何をするのかはわかりませんが、コードの検証時に問題として取り上げられているのはこれだと思います。

これを同じ _string.h ファイルの iOS 6 バージョンと比較すると、strlcat と strlcpy の 2 つのメソッドへの参照がないことがわかります。

rdar 参照を含むコメントもあります。

rdar://problem/12622659

結論: これは iOS 7.0 SDK の問題のようで、Apple が「修正」する必要があります。

アップデート:

本当にアプリを提出したい場合は、_string.h ファイルを編集#define __HAS_FIXED_CHK_PROTOTYPES 1して、次のように編集します。#define __HAS_FIXED_CHK_PROTOTYPES 0

于 2013-09-16T09:16:27.823 に答える
2

この問題は、OpenSSL の自己コンパイル バージョンを使用して発生しました。iOS 6.1 SDK に対して OpenSSL を再コンパイルし、libssl.a と libcrypto.a をプロジェクトに追加してから、SDK 7.0 に対してアプリをビルド/アーカイブし、検証に合格しました。

したがって、これは iOS 7.0 SDK の問題のように見えますが、6.1 SDK にまだアクセスできる場合は、この回避策が機能するはずです。

于 2013-09-20T10:42:15.263 に答える