Explorar el Código

【APPCenter】Crash编号:120 - 修复

lizhe hace 10 meses
padre
commit
efa7af6523
Se han modificado 1 ficheros con 22 adiciones y 15 borrados
  1. 22 15
      PDF Office/PDF Master/Class/DigtalSignature/KMDSignatureManager.m

+ 22 - 15
PDF Office/PDF Master/Class/DigtalSignature/KMDSignatureManager.m

@@ -497,30 +497,37 @@ static CFAbsoluteTime  getExpiredDate(SecCertificateRef cert) {
     return NO;
 }
 
++ (NSString *)stringFromDNwithSubjectName:(CFArrayRef)array {
+    if (!array || CFArrayGetCount(array) == 0) {
+        return @"";
+    }
 
-+ (NSString *)stringFromDNwithSubjectName:(CFArrayRef)array
-{
-    NSMutableString * out = [[NSMutableString alloc] init];
-    const void *keys[] = { kSecOIDCommonName, kSecOIDOrganizationName,kSecOIDOrganizationalUnitName,kSecOIDEmailAddress, kSecOIDLocalityName, kSecOIDStateProvinceName, kSecOIDCountryName };
-    const void *labels[] = { "cn", "o", "ou", "email","l", "s", "c" };
+    NSMutableString *out = [NSMutableString string];
+    const void *keys[] = { kSecOIDCommonName, kSecOIDOrganizationName, kSecOIDOrganizationalUnitName, kSecOIDEmailAddress, kSecOIDLocalityName, kSecOIDStateProvinceName, kSecOIDCountryName };
+    const char *labels[] = { "cn", "o", "ou", "email", "l", "s", "c" };
 
-    for(int i = 0; i < sizeof(keys)/sizeof(keys[0]);  i++) {
-        for (CFIndex n = 0 ; n < CFArrayGetCount(array); n++) {
+    for (int i = 0; i < sizeof(keys) / sizeof(keys[0]); i++) {
+        for (CFIndex n = 0; n < CFArrayGetCount(array); n++) {
             CFDictionaryRef dict = CFArrayGetValueAtIndex(array, n);
-            if (CFGetTypeID(dict) != CFDictionaryGetTypeID())
+            if (!dict || CFGetTypeID(dict) != CFDictionaryGetTypeID()) {
                 continue;
+            }
             CFTypeRef dictkey = CFDictionaryGetValue(dict, kSecPropertyKeyLabel);
-            if (!CFEqual(dictkey, keys[i]))
+            if (!dictkey || !CFEqual(dictkey, keys[i])) {
                 continue;
-            CFStringRef str = (CFStringRef) CFDictionaryGetValue(dict, kSecPropertyKeyValue);
-            if (out.length< 1) {
-                [out appendFormat:@"%s=%@", labels[i], (__bridge NSString*)str];
-            } else {
-                [out appendFormat:@",%s=%@", labels[i], (__bridge NSString*)str];
+            }
+            CFStringRef str = CFDictionaryGetValue(dict, kSecPropertyKeyValue);
+            if (str) {
+                NSString *keyValue = [NSString stringWithFormat:@"%s=%@", labels[i], (__bridge NSString *)str];
+                if (out.length < 1) {
+                    [out appendString:keyValue];
+                } else {
+                    [out appendFormat:@",%@", keyValue];
+                }
             }
         }
     }
-    return [NSString stringWithString:out];
+    return out;
 }
 
 @end