Skip to content

Commit 718d6c5

Browse files
crypto/x509: don't require C99 mode in Darwin cgo code
Fixes #24425 Change-Id: I2aacbced8cd14da67fe9a4cbd62b434c18b5fce2 Reviewed-on: https://go-review.googlesource.com/101215 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Filippo Valsorda <filippo@golang.org>
1 parent 2767c4e commit 718d6c5

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/crypto/x509/root_cgo_darwin.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ int useOldCode() {
7878
// Note: The CFDataRef returned in pemRoots and untrustedPemRoots must
7979
// be released (using CFRelease) after we've consumed its content.
8080
int FetchPEMRoots(CFDataRef *pemRoots, CFDataRef *untrustedPemRoots) {
81+
int i;
82+
8183
if (useOldCode()) {
8284
return FetchPEMRoots_MountainLion(pemRoots);
8385
}
@@ -101,15 +103,16 @@ int FetchPEMRoots(CFDataRef *pemRoots, CFDataRef *untrustedPemRoots) {
101103
102104
CFMutableDataRef combinedData = CFDataCreateMutable(kCFAllocatorDefault, 0);
103105
CFMutableDataRef combinedUntrustedData = CFDataCreateMutable(kCFAllocatorDefault, 0);
104-
for (int i = 0; i < numDomains; i++) {
106+
for (i = 0; i < numDomains; i++) {
107+
int j;
105108
CFArrayRef certs = NULL;
106109
OSStatus err = SecTrustSettingsCopyCertificates(domains[i], &certs);
107110
if (err != noErr) {
108111
continue;
109112
}
110113
111114
CFIndex numCerts = CFArrayGetCount(certs);
112-
for (int j = 0; j < numCerts; j++) {
115+
for (j = 0; j < numCerts; j++) {
113116
CFDataRef data = NULL;
114117
CFErrorRef errRef = NULL;
115118
CFArrayRef trustSettings = NULL;
@@ -124,6 +127,9 @@ int FetchPEMRoots(CFDataRef *pemRoots, CFDataRef *untrustedPemRoots) {
124127
if (i == 0) {
125128
trustAsRoot = 1;
126129
} else {
130+
int k;
131+
CFIndex m;
132+
127133
// Certs found in the system domain are always trusted. If the user
128134
// configures "Never Trust" on such a cert, it will also be found in the
129135
// admin or user domain, causing it to be added to untrustedPemRoots. The
@@ -133,7 +139,7 @@ int FetchPEMRoots(CFDataRef *pemRoots, CFDataRef *untrustedPemRoots) {
133139
// SecTrustServer.c, "user trust settings overrule admin trust settings",
134140
// so take the last trust settings array we find.
135141
// Skip the system domain since it is always trusted.
136-
for (int k = i; k < numDomains; k++) {
142+
for (k = i; k < numDomains; k++) {
137143
CFArrayRef domainTrustSettings = NULL;
138144
err = SecTrustSettingsCopyTrustSettings(cert, domains[k], &domainTrustSettings);
139145
if (err == errSecSuccess && domainTrustSettings != NULL) {
@@ -147,9 +153,9 @@ int FetchPEMRoots(CFDataRef *pemRoots, CFDataRef *untrustedPemRoots) {
147153
// "this certificate must be verified to a known trusted certificate"; aka not a root.
148154
continue;
149155
}
150-
for (CFIndex k = 0; k < CFArrayGetCount(trustSettings); k++) {
156+
for (m = 0; m < CFArrayGetCount(trustSettings); m++) {
151157
CFNumberRef cfNum;
152-
CFDictionaryRef tSetting = (CFDictionaryRef)CFArrayGetValueAtIndex(trustSettings, k);
158+
CFDictionaryRef tSetting = (CFDictionaryRef)CFArrayGetValueAtIndex(trustSettings, m);
153159
if (CFDictionaryGetValueIfPresent(tSetting, policy, (const void**)&cfNum)){
154160
SInt32 result = 0;
155161
CFNumberGetValue(cfNum, kCFNumberSInt32Type, &result);

0 commit comments

Comments
 (0)