Skip to content

Commit b418953

Browse files
Change to newest json lib 3.11.2 (#327)
Cleaned up unmanged memory deleting copied data
1 parent 5116c72 commit b418953

File tree

11 files changed

+227
-97
lines changed

11 files changed

+227
-97
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ cmake/CPM_0.31.0.cmake
150150
bindings/netframework/ElectionGuard.NetFramework/packages/
151151

152152
sample-data.zip
153-
153+
sample-data-1-0.zip
154154
sample-data-container.zip
155155

156156
bindings/netstandard/ElectionGuard/*.user

bindings/netstandard/ElectionGuard/ElectionGuard.Encryption/Ballot.cs

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ public unsafe string Value
5454
var status = NativeInterface.ExtendedData.GetValue(
5555
Handle, out IntPtr value);
5656
status.ThrowIfError();
57-
return Marshal.PtrToStringAnsi(value);
57+
var data = Marshal.PtrToStringAnsi(value);
58+
NativeInterface.Memory.FreeIntPtr(value);
59+
return data;
5860
}
5961
}
6062

@@ -134,7 +136,9 @@ public unsafe string ObjectId
134136
var status = NativeInterface.PlaintextBallotSelection.GetObjectId(
135137
Handle, out IntPtr value);
136138
status.ThrowIfError();
137-
return Marshal.PtrToStringAnsi(value);
139+
var data = Marshal.PtrToStringAnsi(value);
140+
NativeInterface.Memory.FreeIntPtr(value);
141+
return data;
138142
}
139143
}
140144

@@ -273,7 +277,9 @@ public unsafe string ObjectId
273277
var status = NativeInterface.CiphertextBallotSelection.GetObjectId(
274278
Handle, out IntPtr value);
275279
status.ThrowIfError();
276-
return Marshal.PtrToStringAnsi(value);
280+
var data = Marshal.PtrToStringAnsi(value);
281+
NativeInterface.Memory.FreeIntPtr(value);
282+
return data;
277283
}
278284
}
279285

@@ -458,7 +464,9 @@ public unsafe string ObjectId
458464
var status = NativeInterface.PlaintextBallotContest.GetObjectId(
459465
Handle, out IntPtr value);
460466
status.ThrowIfError();
461-
return Marshal.PtrToStringAnsi(value);
467+
var data = Marshal.PtrToStringAnsi(value);
468+
NativeInterface.Memory.FreeIntPtr(value);
469+
return data;
462470
}
463471
}
464472

@@ -575,7 +583,9 @@ public unsafe string ObjectId
575583
var status = NativeInterface.CiphertextBallotContest.GetObjectId(
576584
Handle, out IntPtr value);
577585
status.ThrowIfError();
578-
return Marshal.PtrToStringAnsi(value);
586+
var data = Marshal.PtrToStringAnsi(value);
587+
NativeInterface.Memory.FreeIntPtr(value);
588+
return data;
579589
}
580590
}
581591

@@ -780,7 +790,9 @@ public unsafe string ObjectId
780790
var status = NativeInterface.PlaintextBallot.GetObjectId(
781791
Handle, out IntPtr value);
782792
status.ThrowIfError();
783-
return Marshal.PtrToStringAnsi(value);
793+
var data = Marshal.PtrToStringAnsi(value);
794+
NativeInterface.Memory.FreeIntPtr(value);
795+
return data;
784796
}
785797
}
786798

@@ -796,7 +808,9 @@ public unsafe string StyleId
796808
var status = NativeInterface.PlaintextBallot.GetStyleId(
797809
Handle, out IntPtr value);
798810
status.ThrowIfError();
799-
return Marshal.PtrToStringAnsi(value);
811+
var data = Marshal.PtrToStringAnsi(value);
812+
NativeInterface.Memory.FreeIntPtr(value);
813+
return data;
800814
}
801815
}
802816

@@ -895,7 +909,8 @@ public unsafe string ToJson()
895909
var status = NativeInterface.PlaintextBallot.ToJson(
896910
Handle, out IntPtr pointer, out ulong size);
897911
status.ThrowIfError();
898-
var json = Marshal.PtrToStringAnsi(pointer);
912+
var json = Marshal.PtrToStringAnsi(pointer, (int)size);
913+
NativeInterface.Memory.FreeIntPtr(pointer);
899914
return json;
900915
}
901916

@@ -1043,7 +1058,9 @@ public unsafe string ObjectId
10431058
var status = NativeInterface.CiphertextBallot.GetObjectId(
10441059
Handle, out IntPtr value);
10451060
status.ThrowIfError();
1046-
return Marshal.PtrToStringAnsi(value);
1061+
var data = Marshal.PtrToStringAnsi(value);
1062+
NativeInterface.Memory.FreeIntPtr(value);
1063+
return data;
10471064
}
10481065
}
10491066

@@ -1059,7 +1076,9 @@ public unsafe string StyleId
10591076
var status = NativeInterface.CiphertextBallot.GetStyleId(
10601077
Handle, out IntPtr value);
10611078
status.ThrowIfError();
1062-
return Marshal.PtrToStringAnsi(value);
1079+
var data = Marshal.PtrToStringAnsi(value);
1080+
NativeInterface.Memory.FreeIntPtr(value);
1081+
return data;
10631082
}
10641083
}
10651084

@@ -1223,7 +1242,8 @@ public unsafe string ToJson(bool withNonces = false)
12231242
: NativeInterface.CiphertextBallot.ToJson(
12241243
Handle, out pointer, out size);
12251244
status.ThrowIfError();
1226-
var json = Marshal.PtrToStringAnsi(pointer);
1245+
var json = Marshal.PtrToStringAnsi(pointer, (int)size);
1246+
NativeInterface.Memory.FreeIntPtr(pointer);
12271247
return json;
12281248
}
12291249

@@ -1316,7 +1336,9 @@ public unsafe string ObjectId
13161336
var status = NativeInterface.CompactCiphertextBallot.GetObjectId(
13171337
Handle, out IntPtr value);
13181338
status.ThrowIfError();
1319-
return Marshal.PtrToStringAnsi(value);
1339+
var data = Marshal.PtrToStringAnsi(value);
1340+
NativeInterface.Memory.FreeIntPtr(value);
1341+
return data;
13201342
}
13211343
}
13221344

@@ -1408,7 +1430,9 @@ public unsafe string ObjectId
14081430
var status = NativeInterface.SubmittedBallot.GetObjectId(
14091431
Handle, out IntPtr value);
14101432
status.ThrowIfError();
1411-
return Marshal.PtrToStringAnsi(value);
1433+
var data = Marshal.PtrToStringAnsi(value);
1434+
NativeInterface.Memory.FreeIntPtr(value);
1435+
return data;
14121436
}
14131437
}
14141438

@@ -1424,7 +1448,9 @@ public unsafe string StyleId
14241448
var status = NativeInterface.SubmittedBallot.GetStyleId(
14251449
Handle, out IntPtr value);
14261450
status.ThrowIfError();
1427-
return Marshal.PtrToStringAnsi(value);
1451+
var data = Marshal.PtrToStringAnsi(value);
1452+
NativeInterface.Memory.FreeIntPtr(value);
1453+
return data;
14281454
}
14291455
}
14301456

@@ -1583,7 +1609,8 @@ public unsafe string ToJson()
15831609
var status = NativeInterface.SubmittedBallot.ToJson(
15841610
Handle, out IntPtr pointer, out ulong size);
15851611
status.ThrowIfError();
1586-
var json = Marshal.PtrToStringAnsi(pointer);
1612+
var json = Marshal.PtrToStringAnsi(pointer, (int)size);
1613+
NativeInterface.Memory.FreeIntPtr(pointer);
15871614
return json;
15881615
}
15891616

bindings/netstandard/ElectionGuard/ElectionGuard.Encryption/Election.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,8 @@ public unsafe string ToJson()
316316
var status = NativeInterface.CiphertextElectionContext.ToJson(
317317
Handle, out IntPtr pointer, out ulong size);
318318
status.ThrowIfError();
319-
var json = Marshal.PtrToStringAnsi(pointer);
319+
var json = Marshal.PtrToStringAnsi(pointer, (int)size);
320+
NativeInterface.Memory.FreeIntPtr(pointer);
320321
return json;
321322
}
322323
}

bindings/netstandard/ElectionGuard/ElectionGuard.Encryption/ElectionGuard.Encryption.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
<!-- Project -->
88
<RootNamespace>ElectionGuard</RootNamespace>
99
<AssemblyName>ElectionGuard.Encryption</AssemblyName>
10-
<Version>0.1.15</Version>
11-
<AssemblyVersion>0.1.15.0</AssemblyVersion>
12-
<AssemblyFileVersion>0.1.15.0</AssemblyFileVersion>
10+
<Version>0.1.16</Version>
11+
<AssemblyVersion>0.1.16.0</AssemblyVersion>
12+
<AssemblyFileVersion>0.1.16.0</AssemblyFileVersion>
1313
</PropertyGroup>
1414

1515
<PropertyGroup>
@@ -19,7 +19,7 @@
1919
<Title>ElectionGuard Encryption</Title>
2020
<Description>Open source implementation of ElectionGuard's ballot encryption.</Description>
2121
<Authors>Microsoft</Authors>
22-
<PackageVersion>0.1.15</PackageVersion>
22+
<PackageVersion>0.1.16</PackageVersion>
2323
<PackageLicenseExpression>MIT</PackageLicenseExpression>
2424
<PackageProjectUrl>https://github.com/microsoft/electionguard-cpp</PackageProjectUrl>
2525
<RepositoryUrl>https://github.com/microsoft/electionguard-cpp</RepositoryUrl>

bindings/netstandard/ElectionGuard/ElectionGuard.Encryption/Encrypt.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ public unsafe string ToJson()
6868
{
6969
var status = NativeInterface.EncryptionDevice.ToJson(Handle, out IntPtr pointer, out ulong size);
7070
status.ThrowIfError();
71-
var json = Marshal.PtrToStringAnsi(pointer);
71+
var json = Marshal.PtrToStringAnsi(pointer, (int)size);
72+
NativeInterface.Memory.FreeIntPtr(pointer);
7273
return json;
7374
}
7475

bindings/netstandard/ElectionGuard/ElectionGuard.Encryption/Group.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public unsafe string ToHex()
6565
throw new ElectionGuardException($"ToHex Error Status: {status}");
6666
}
6767
var value = Marshal.PtrToStringAnsi(pointer);
68+
NativeInterface.Memory.FreeIntPtr(pointer);
6869
return value;
6970
}
7071

@@ -177,6 +178,7 @@ public unsafe string ToHex()
177178
throw new ElectionGuardException($"ToHex Error Status: {status}");
178179
}
179180
var value = Marshal.PtrToStringAnsi(pointer);
181+
NativeInterface.Memory.FreeIntPtr(pointer);
180182
return value;
181183
}
182184

@@ -413,7 +415,8 @@ public unsafe static string ToJson()
413415
var status = NativeInterface.Constants.ToJson(
414416
out IntPtr pointer, out ulong size);
415417
status.ThrowIfError();
416-
var json = Marshal.PtrToStringAnsi(pointer);
418+
var json = Marshal.PtrToStringAnsi(pointer, (int)size);
419+
NativeInterface.Memory.FreeIntPtr(pointer);
417420
return json;
418421
}
419422

0 commit comments

Comments
 (0)