# Extended 5.6 — sqMacSSL sqGetPeerCertificates: trust leaked on alloc fail

Bug ref      : pharo.md §5.6
Severity     : MEDIUM (CoreFoundation trust ref leak under OOM)
File         : extracted/plugins/SqueakSSL/src/osx/sqMacSSL.c
Lines (HEAD) : 298-323

## Problem

```c
status = SSLCopyPeerTrust(ssl->ctx, &trust);
...
CFMutableArrayRef ca = CFArrayCreateMutable(kCFAllocatorDefault, certCount, ...);
if (ca == NULL) {
    return errSecAllocate;          // <-- leaks `trust`
}
```

`trust` is an owned CoreFoundation ref. The early-return on
`CFArrayCreateMutable` failure does not `CFRelease(trust)`.

## Fix

```diff
diff --git a/extracted/plugins/SqueakSSL/src/osx/sqMacSSL.c b/extracted/plugins/SqueakSSL/src/osx/sqMacSSL.c
index 2c28e855e..b4b75c033 100644
--- a/extracted/plugins/SqueakSSL/src/osx/sqMacSSL.c
+++ b/extracted/plugins/SqueakSSL/src/osx/sqMacSSL.c
@@ -312,6 +312,8 @@ static OSStatus sqGetPeerCertificates(sqSSL* ssl)
                                                 certCount,
                                                 &kCFTypeArrayCallBacks);
     if (ca == NULL) {
+        /* Trust ref was leaked here; release before returning. */
+        CFRelease(trust);
         return errSecAllocate;
     } else {
         for (CFIndex i = 0; i < certCount; i++) {
```

## Test plan

- Under CF allocator failure injection (or low memory), call
  sqGetPeerCertificates. Verify no `trust` leak via macOS
  leaks(1) or instruments.

## Risk notes

- Pure cleanup fix; success path unchanged.
