Skip to content

Commit b3db50e

Browse files
Merge pull request #1129 from andersjonsson/develop
fixed an error with reading Base64-encoded data and added a test
2 parents 887fdf5 + 0982a4d commit b3db50e

File tree

3 files changed

+57
-3
lines changed

3 files changed

+57
-3
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using System.Xml.Linq;
8+
using Microsoft.VisualStudio.TestTools.UnitTesting;
9+
10+
namespace SoapCore.Tests
11+
{
12+
[TestClass]
13+
public class XDocumentXmlReaderTests
14+
{
15+
[TestMethod]
16+
public void TestReadBase64()
17+
{
18+
var xml = @"
19+
<Request>
20+
<Base64Data>
21+
QkVHSU4KQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhQmxhYmxhYmxhbGJsYUJsYWJsYWJsYWxibGFCbGFibGFibGFsYmxhCkVORA==
22+
</Base64Data>
23+
</Request>
24+
";
25+
var xdoc = XDocument.Parse(xml);
26+
var reader = new XDocumentXmlReader(xdoc);
27+
28+
reader.Read();
29+
reader.Read();
30+
reader.Read();
31+
32+
var buffer = new byte[1024];
33+
var ms = new MemoryStream();
34+
var start = 0;
35+
while (true)
36+
{
37+
var i = reader.ReadContentAsBase64(buffer, start, 1024);
38+
ms.Write(buffer, 0, i);
39+
start += i;
40+
41+
if (i < buffer.Length)
42+
{
43+
break;
44+
}
45+
}
46+
47+
ms.Position = 0;
48+
49+
Assert.AreEqual(1336, ms.Length);
50+
}
51+
}
52+
}

src/SoapCore/SoapCore.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<Description>SOAP protocol middleware for ASP.NET Core</Description>
5-
<Version>1.2.1.2</Version>
5+
<Version>1.2.1.3</Version>
66
<Authors>Digital Design</Authors>
77
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0;netcoreapp3.1;</TargetFrameworks>
88
<PackageId>SoapCore</PackageId>

src/SoapCore/XDocumentXmlReader.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ public XDocumentXmlReader(XDocument document)
3737
public override int ReadContentAsBase64(byte[] buffer, int index, int count)
3838
{
3939
EnsureBinaryStream(true);
40-
return _binaryStream!.Read(buffer, index, count);
40+
41+
return _binaryStream!.Read(buffer, 0, count);
4142
}
4243

4344
public override int ReadElementContentAsBase64(byte[] buffer, int index, int count)
@@ -53,7 +54,8 @@ public override int ReadElementContentAsBase64(byte[] buffer, int index, int cou
5354
public override int ReadContentAsBinHex(byte[] buffer, int index, int count)
5455
{
5556
EnsureBinaryStream(false);
56-
return _binaryStream!.Read(buffer, index, count);
57+
58+
return _binaryStream!.Read(buffer, 0, count);
5759
}
5860

5961
public override int ReadElementContentAsBinHex(byte[] buffer, int index, int count)

0 commit comments

Comments
 (0)