Skip to content

Commit cdaf240

Browse files
author
Steve Syfuhs
committed
Don't leak that
1 parent e28437f commit cdaf240

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

Kerberos.NET/Win32/LsaInterop.cs

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -288,23 +288,24 @@ public unsafe IEnumerable<KerberosClientCacheEntry> GetTicketCache(long luid = 0
288288
pRequest->MessageType = KERB_PROTOCOL_MESSAGE_TYPE.KerbQueryTicketCacheEx3Message;
289289
pRequest->LogonId = luid;
290290

291-
var response = this.LsaCallAuthenticationPackageWithReturn(pRequest, bufferSize);
292-
293-
return WithFixedBuffer(response, p =>
291+
using (var response = this.LsaCallAuthenticationPackageWithReturn(pRequest, bufferSize))
294292
{
295-
var pCacheResponse = (KERB_QUERY_TKT_CACHE_EX3_RESPONSE*)p;
293+
return WithFixedBuffer(response, p =>
294+
{
295+
var pCacheResponse = (KERB_QUERY_TKT_CACHE_EX3_RESPONSE*)p;
296296

297-
var cacheResult = new List<KerberosClientCacheEntry>();
297+
var cacheResult = new List<KerberosClientCacheEntry>();
298298

299-
for (var i = 0; i < pCacheResponse->CountOfTickets; i++)
300-
{
301-
var ticket = (&pCacheResponse->Tickets)[i];
299+
for (var i = 0; i < pCacheResponse->CountOfTickets; i++)
300+
{
301+
var ticket = (&pCacheResponse->Tickets)[i];
302302

303-
cacheResult.Add(ticket.ToCacheEntry());
304-
}
303+
cacheResult.Add(ticket.ToCacheEntry());
304+
}
305305

306-
return cacheResult;
307-
});
306+
return cacheResult;
307+
});
308+
}
308309
});
309310
}
310311

@@ -366,16 +367,17 @@ public unsafe KrbCred GetTicket(string spn, long luid = 0)
366367

367368
SetString(spn, pRequest, ref pRequest->TargetName, ref requestSize);
368369

369-
var response = this.LsaCallAuthenticationPackageWithReturn(pRequest, bufferSize);
370-
371-
return WithFixedBuffer(response, p =>
370+
using (var response = this.LsaCallAuthenticationPackageWithReturn(pRequest, bufferSize))
372371
{
373-
var pResponse = (KERB_RETRIEVE_TKT_RESPONSE*)p;
372+
return WithFixedBuffer(response, p =>
373+
{
374+
var pResponse = (KERB_RETRIEVE_TKT_RESPONSE*)p;
374375

375-
var cred = new Span<byte>(pResponse->Ticket.EncodedTicket, pResponse->Ticket.EncodedTicketSize);
376+
var cred = new Span<byte>(pResponse->Ticket.EncodedTicket, pResponse->Ticket.EncodedTicketSize);
376377

377-
return KrbCred.DecodeApplication(cred.ToArray());
378-
});
378+
return KrbCred.DecodeApplication(cred.ToArray());
379+
});
380+
}
379381
});
380382
}
381383

0 commit comments

Comments
 (0)