내 손을 잡을 수있는 모든 iOS 장치 및 Xcode에 연결된 에뮬레이터에서 문제없이 응용 프로그램을 테스트했습니다. 이제 애플에서 아이폰 OS 6.0.1을 돌리는 아이 패드 3rd Gen에서 충돌로 앱이 거부되었다는 말을 들었다.충돌로 인해 애플이 거부되었습니다. 재현 할 수 없습니다. sha256
문제는 다음과 같은 기능에서 발생한 것으로 보인다0 libsystem_c.dylib 0x39421d74 strlen + 28
1 Appname 0x0000da16 +[Utilities sha256:] (Utilities.m:28)
2 Appname 0x0000dc1c +[Utilities complete256Hash:] (Utilities.m:46)
3 Appname 0x0000ea66 -[SettingController TestSettingsTapped] (SettingController.m:83)
, 누군가가 내가 충돌 애플을 재현 할 수 아니다 원인, 잘못 될 일 날 지점 수 : 충돌에서
내가 읽을 수있는 기록 모든 테스트를 마친 기기를 덴마크어로 설정해야 할 수도 있습니다.+(NSString*) sha256:(NSString *)clear{
const char *s=[clear cStringUsingEncoding:NSUTF8StringEncoding];
NSData *keyData=[NSData dataWithBytes:s length:strlen(s)];
uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0};
CC_SHA256(keyData.bytes, keyData.length, digest);
NSData *out=[NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH];
NSString *hash=[out description];
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
return hash;
}
감사합니다.
strlen()도 문제가있는 것으로 보았습니다. 그러나 나는 애플이 함수에 전달 된 값을 무효로 처리하는 방법을 알 수 없다. 그들이 사용한 입력을 제공했다면 좋았을 것입니다. 오류가 발생하는 함수에서 테스트를합니다. if ([InputField.text isEqualToString : @ ""]) 및 오류가 else 절에 나오므로 절대로 값을 전달할 수 없어야합니다. – Jacob
맨 위에는 다음과 같은 보조 함수에서 게시 한 메서드 만 호출합니다. + (NSString *) complete256Hash : (NSString *) cStr { NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults]; NSString * SHA1Para = [prefs stringForKey : @ "SpecialKey1"]; NSString * SHA2Para = [prefs stringForKey : @ "SpecialKey2"]; NSString * hash = [cStr stringByAppendingString : SHA1Para]; hash = [유틸리티 sha256 : 해시]; hash = [해시 stringByAppendingString : SHA2Para]; hash = [유틸리티 sha256 : 해시]; 리턴 해시; } – Jacob
기기에서 앱을 처음 시작하면 userDefaults가 아직 존재하지 않고 stringForKey :가 nil을 반환하므로 sha256을 nil 매개 변수로 호출합니다. nil이 전달되면 sha256 메소드를 종료해야합니다. – Johnmph