Merge pull request #691 from mburshteyn1/textdescriptorreader-fix

Fix error in TextDescriptorReader when data contains leading empty spaces
diff --git a/src/lib/profiles/device-description/DeviceDescription.cpp b/src/lib/profiles/device-description/DeviceDescription.cpp
index ca9eebf..0d357e9 100644
--- a/src/lib/profiles/device-description/DeviceDescription.cpp
+++ b/src/lib/profiles/device-description/DeviceDescription.cpp
@@ -237,7 +237,7 @@
         while (mReadPoint < mValEnd && isspace(*mReadPoint))
             mReadPoint++;
 
-        mFieldEnd = val;
+        mFieldEnd = mReadPoint;
 
         Version = (mReadPoint < mValEnd) ? *mReadPoint : 0;
         Key = 0;
diff --git a/src/test-apps/TestDeviceDescriptor.cpp b/src/test-apps/TestDeviceDescriptor.cpp
index 6e8ee59..b397aaf 100644
--- a/src/test-apps/TestDeviceDescriptor.cpp
+++ b/src/test-apps/TestDeviceDescriptor.cpp
@@ -88,6 +88,7 @@
     const char *textDevDesc1 = "1S:01AA01AB5011003W$";
     const char *textDevDesc2 = "1V:235A$P:1$R:1$D:140914$S:05BA01AC0313003G$L:18B43000000A91B3$W:18B43001D183$I:TOPAZZZ-91B3$C:07KP74$";
     const char *textDevDesc3 = "1V:235A$P:13$R:1$D:160805$S:15AA01ZZ01160101$E:18B4300400000101$";
+    const char *textDevDesc4 = "     1V:E100$P:13$R:1$D:160805$S:15AA01ZZ01160101$E:18B4300400000101$";
 
     devDesc.Clear();
     WeaveDeviceDescriptor::DecodeText(textDevDesc1, strlen(textDevDesc1), devDesc);
@@ -127,6 +128,17 @@
     AssertValue(devDesc.ManufacturingDate.Month, 8);
     AssertValue(devDesc.ManufacturingDate.Day, 5);
     AssertValue(devDesc.DeviceId, 0x18B4300400000101UL);
+
+    devDesc.Clear();
+    WeaveDeviceDescriptor::DecodeText(textDevDesc3, strlen(textDevDesc3), devDesc);
+    AssertValue(devDesc.VendorId, kWeaveVendor_Google);
+    AssertValue(devDesc.ProductId, 0x0013);
+    AssertValue(devDesc.ProductRevision, 1);
+    AssertValue(devDesc.SerialNumber, "15AA01ZZ01160101");
+    AssertValue(devDesc.ManufacturingDate.Year, 2016);
+    AssertValue(devDesc.ManufacturingDate.Month, 8);
+    AssertValue(devDesc.ManufacturingDate.Day, 5);
+    AssertValue(devDesc.DeviceId, 0x18B4300400000101UL);
 }
 
 void TestTextEncoding(void)