Ensure FRU text is printable ASCII
Currently, libcper currently fails to compile on my machine (GCC 13):
../cper-utils.c: In function ‘add_untrusted_string’:
../cper-utils.c:467:23: error: comparison is always false due to
limited range of data type [-Werror=type-limits]
467 | if (c < 0) {
| ^
The reason seems to be that char signedness is implementation-defined,
we have to explicitly use unsigned char or signed char to get a portable
char type. In our case, char is unsigned char, hence the warning.
Apparently we are trying to validate ASCII strings from the records.
Those strings seem to be used for display purpose only, so I think
replacing it with a more precise printable ASCII test, which also does
not care about char signedness, is appropriate here.
This changes the JSON fruText property to appear only with printable
ASCII FRU content. As a result, all of the examples have been changed
where applicable. Some sections use FRU content with a predefined format
(pcie, cxlprotocol) so fruText has been completely removed from those
JSON objects like in the case of non-printable ASCII FRU content.
Tested: oompile successfully
Change-Id: I98c7c10a674c8817e0b2cbe82c26f6590d8d716a
Signed-off-by: Khang D Nguyen <khangng@os.amperecomputing.com>
diff --git a/cper-parse.c b/cper-parse.c
index 9dd9c4f..edbae56 100644
--- a/cper-parse.c
+++ b/cper-parse.c
@@ -359,27 +359,9 @@
//If validation bits indicate it exists, add FRU text.
if ((section_descriptor->SecValidMask & 0x2) >> 1) {
- int fru_text_len = 0;
- for (;
- fru_text_len < (int)sizeof(section_descriptor->FruString);
- fru_text_len++) {
- char c = section_descriptor->FruString[fru_text_len];
- if (c < 0) {
- //cper_print_log("Fru text contains non-ASCII character\n");
- fru_text_len = -1;
- break;
- }
- if (c == '\0') {
- break;
- }
- }
- if (fru_text_len >= 0) {
- json_object_object_add(
- section_descriptor_ir, "fruText",
- json_object_new_string_len(
- section_descriptor->FruString,
- fru_text_len));
- }
+ add_untrusted_string(section_descriptor_ir, "fruText",
+ section_descriptor->FruString,
+ sizeof(section_descriptor->FruString));
}
//Section severity.
diff --git a/cper-utils.c b/cper-utils.c
index 0821a16..f6adbdb 100644
--- a/cper-utils.c
+++ b/cper-utils.c
@@ -4,6 +4,7 @@
* Author: Lawrence.Tang@arm.com
**/
+#include <ctype.h>
#include <stdio.h>
#include <json.h>
#include <string.h>
@@ -464,11 +465,11 @@
int fru_text_len = 0;
for (; fru_text_len < len; fru_text_len++) {
char c = str[fru_text_len];
- if (c < 0) {
- fru_text_len = -1;
+ if (c == '\0') {
break;
}
- if (c == '\0') {
+ if (!isprint(c)) {
+ fru_text_len = -1;
break;
}
}
diff --git a/examples/arm.cperhex b/examples/arm.cperhex
index 190b1d3..f5aa12c 100644
--- a/examples/arm.cperhex
+++ b/examples/arm.cperhex
@@ -1,15 +1,16 @@
-435045520000ffffffff01000300000003000000d40100005300180010065593
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-8595250800000000040000000000000000000000000000000000000000000000
-c80000000c010000462e030078000000163d9ee111bce4119caac2051d5d46b0
-9baa689ff4b3c83be10e045a48a46ee90300000016495d73691d74163927663a
-0304774a1f3b0d000a000000030002000c0100000200000095fa8ae0f099633e
-e8b628cc32d2927200000000705116220020150002f1570d5505408b77050000
-6b2c97bdd0eafcdb01db94bc4b020c4c0020150001b47a065500dd0a00000000
-ee123ed90f1adaeaae9635b0a2818b44002015000115ec065500980a00000000
-44114d5eeb370c816dbc24ee47685b8a818f0100600000005d6f8396aec7a7fb
-2693333214a0ef388e36a0eac0dff5416e15ae5329f2d08661531c0f1ac40b40
-573e736bde62a46c98445659234b9a916149e48a3bb4109c072dac22f1b76248
-f5d5b3d337573fd09c9629bfe1c351420c35cc47eadde4f1901308000a000000
-f60f834e4e53eae47ca91d601c3338123b061918
\ No newline at end of file
+435045520000ffffffff01000300000003000000d4010000530018001006
+559300000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000859525080000000004000000000000000000000000000000
+0000000000000000c80000000c010000462e030078000000163d9ee111bc
+e4119caac2051d5d46b09baa689ff4b3c83be10e045a48a46ee903000000
+495d7369743927663a774a3b00000000000000000a000000030002000c01
+0000020000000000000000000000e8b628cc32d292720000000070511622
+0020150002f15700550d408174050000000000000000000001db94bc4b02
+0c4c0020150001b47a005500c100000000000000000000000000ae9635b0
+a2818b44002015000115ec00550080000000000000000000000000006dbc
+24ee47685b8a818f0100600000005d6f8396aec7a7fb2693333214a0ef38
+8e36a0eac0dff5416e15ae5329f2d08661531c0f1ac40b40573e736bde62
+a46c98445659234b9a916149e48a3bb4109c072dac22f1b76248f5d5b3d3
+37573fd09c9629bfe1c351420c35cc47eadde4f1901308000a000000f60f
+834e4e53eae47ca91d601c3338123b061918
\ No newline at end of file
diff --git a/examples/arm.json b/examples/arm.json
index 13a945c..8d275c7 100644
--- a/examples/arm.json
+++ b/examples/arm.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": true
},
"fruID": "9f68aa9b-b3f4-3bc8-e10e-045a48a46ee9",
- "fruText": "\u0016I]si\u001dt\u00169'f:\u0003\u0004wJ\u001f;\r",
+ "fruText": "I]sit9'f:wJ;",
"revision": {
"major": 46,
"minor": 70
diff --git a/examples/ccixper.cperhex b/examples/ccixper.cperhex
index f055a79..21e11f5 100644
--- a/examples/ccixper.cperhex
+++ b/examples/ccixper.cperhex
@@ -1,11 +1,12 @@
-435045520000ffffffff01000000000003000000580100000200110007100873
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-c89acc5d00000000040000000000000000000000000000000000000000000000
-c80000009000000028e20300e2000000f65e3391fbeb7844a6a688b728cf75d7
-7063d63b089ca7307e8ac060e64bf42400000000042334491622577f5d634c23
-10754224746b4500900000000500000000000000511000008fe1549475426936
-5d829009be737a9943dbcb69b56c826d4e4f1ea0401a1bcffb6f6370b1cda60f
-4f37180daa93a6ed6e715623ddd9902c28aecc68c8e737c3569b330868da17b7
-112fc4bbc26aa830dbff54b8d8e4e40093b0695b97a01fee3b52f6a32c0d5a3d
-3c1ef8ff88a12f63a0831c78680078fbb1e15648827536bd
\ No newline at end of file
+435045520000ffffffff0100000000000300000058010000020011000710
+087300000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000c89acc5d0000000004000000000000000000000000000000
+0000000000000000c80000009000000028e20300e2000000f65e3391fbeb
+7844a6a688b728cf75d77063d63b089ca7307e8ac060e64bf42400000000
+23344922575d634c23754224746b45000000000090000000050000000000
+0000510000008fe15494754269365d829009be737a9943dbcb69b56c826d
+4e4f1ea0401a1bcffb6f6370b1cda60f4f37180daa93a6ed6e715623ddd9
+902c28aecc68c8e737c3569b330868da17b7112fc4bbc26aa830dbff54b8
+d8e4e40093b0695b97a01fee3b52f6a32c0d5a3d3c1ef8ff88a12f63a083
+1c78680078fbb1e15648827536bd
\ No newline at end of file
diff --git a/examples/ccixper.json b/examples/ccixper.json
index fc1af2d..80349dc 100644
--- a/examples/ccixper.json
+++ b/examples/ccixper.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": false
},
"fruID": "3bd66370-9c08-30a7-7e8a-c060e64bf424",
- "fruText": "\u0004#4I\u0016\"W]cL#\u0010uB$tkE",
+ "fruText": "#4I\"W]cL#uB$tkE",
"revision": {
"major": 226,
"minor": 40
diff --git a/examples/cxlcomponent-media.cperhex b/examples/cxlcomponent-media.cperhex
index 1ef5dc0..15bd389 100644
--- a/examples/cxlcomponent-media.cperhex
+++ b/examples/cxlcomponent-media.cperhex
@@ -1,9 +1,10 @@
-435045520000ffffffff01000300000003000000190100005700080007032408
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-9b66466a00000000040000000000000000000000000000000000000000000000
-c800000051000000ff540300e4000000770acdfb60c27f4185a9088b1621eba6
-1ef8ff88a12f63a0831c78680078fbb1020000001e1b336b67775a41084e0663
-12225c5b675e1a0051000000050000000000000051f0fc7b8fe1549475406900
-5d829009be737a9943dbcb69b56c826d4e4f1ea0401a1bcffb6f6370b1cda60f
-4f37180daa93a6ed6e715623ddd9902c28aecc68c8e737c356
\ No newline at end of file
+435045520000ffffffff0100030000000300000019010000570008000703
+240800000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+0000000000009b66466a0000000004000000000000000000000000000000
+0000000000000000c800000051000000ff540300e4000000770acdfb60c2
+7f4185a9088b1621eba61ef8ff88a12f63a0831c78680078fbb102000000
+336b67775a414e63225c5b675e0000000000000051000000050000000000
+000051f0fc7b8fe1549475406900000000000000000043dbcb69b56c826d
+4e4f1ea0401a1bcffb6f6370b1cda60f4f37180daa93a6ed6e715623ddd9
+902c28aecc68c8e737c356
\ No newline at end of file
diff --git a/examples/cxlcomponent-media.json b/examples/cxlcomponent-media.json
index 410334b..e372ea5 100644
--- a/examples/cxlcomponent-media.json
+++ b/examples/cxlcomponent-media.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": false
},
"fruID": "88fff81e-2fa1-a063-831c-78680078fbb1",
- "fruText": "\u001e\u001b3kgwZA\bN\u0006c\u0012\"\\[g^\u001a",
+ "fruText": "3kgwZANc\"\\[g^",
"revision": {
"major": 84,
"minor": 255
diff --git a/examples/cxlprotocol.json b/examples/cxlprotocol.json
index eafb32e..c6b467d 100644
--- a/examples/cxlprotocol.json
+++ b/examples/cxlprotocol.json
@@ -38,7 +38,6 @@
"resourceNotAccessible": false
},
"fruID": "812742df-6564-fe37-3d33-86899e72aa45",
- "fruText": "\u0011.@&}\u0017q#KRf %U(AHI<",
"revision": {
"major": 216,
"minor": 154
diff --git a/examples/dmargeneric.cperhex b/examples/dmargeneric.cperhex
index ffa9645..ed2a1fe 100644
--- a/examples/dmargeneric.cperhex
+++ b/examples/dmargeneric.cperhex
@@ -1,8 +1,8 @@
-435045520000ffffffff01000100000003000000e80000001400080009023056
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-69e7b12100000000040000000000000000000000000000000000000000000000
-c80000002000000070b103000f000000f7fe515b9dc734448f1baa62de3e2c64
-68c8e737c3569b330868da17b7112fc4030000002a0b6d771e0b53305e01176c
-0e7a6e194a49550071dbd0600501010219b7e2cdb151f0fc0000000000000000
-0000000000000000
\ No newline at end of file
+435045520000ffffffff01000100000003000000e8000000140008000902
+305600000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+00000000000069e7b1210000000004000000000000000000000000000000
+0000000000000000c80000002000000070b103000f000000f7fe515b9dc7
+34448f1baa62de3e2c6468c8e737c3569b330868da17b7112fc403000000
+2a6d7753305e6c7a6e4a4955000000000000000071dbd0600501010219b7
+e2cdb151f0fc00000000000000000000000000000000
\ No newline at end of file
diff --git a/examples/dmargeneric.json b/examples/dmargeneric.json
index 2203554..8ca653d 100644
--- a/examples/dmargeneric.json
+++ b/examples/dmargeneric.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": false
},
"fruID": "37e7c868-56c3-339b-0868-da17b7112fc4",
- "fruText": "*\u000bmw\u001e\u000bS0^\u0001\u0017l\u000ezn\u0019JIU",
+ "fruText": "*mwS0^lznJIU",
"revision": {
"major": 177,
"minor": 112
diff --git a/examples/dmariommu.cperhex b/examples/dmariommu.cperhex
index a382fd1..62a3c3d 100644
--- a/examples/dmariommu.cperhex
+++ b/examples/dmariommu.cperhex
@@ -1,11 +1,12 @@
-435045520000ffffffff01000000000003000000580100005800120015017356
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-bd3d771500000000040000000000000000000000000000000000000000000000
-c8000000900000006b28030090000000e1846f03377f8c42a79e575fdfaa84ec
-737063d63b089ca7307e8ac060e64bf40300000020042334491622577f5d634c
-2310754224746b00710000000000000019b7e2cdb151f0fc7b8fe15494754269
-00000000000000009943dbcb69b56c826d4e4f1ea0401a1b0000000000000000
-0000000000000000ed6e715623ddd9902c28aecc68c8e737c3569b330868da17
-b7112fc4bbc26aa830dbff54b8d8e4e40093b0695b97a01fee3b52f6a32c0d5a
-3d3c1ef8ff88a12f63a0831c78680078fbb1e15648827536
\ No newline at end of file
+435045520000ffffffff0100000000000300000058010000580012001501
+735600000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000bd3d77150000000004000000000000000000000000000000
+0000000000000000c8000000900000006b28030090000000e1846f03377f
+8c42a79e575fdfaa84ec737063d63b089ca7307e8ac060e64bf403000000
+2023344922575d634c23754224746b0000000000710000000000000019b7
+e2cdb151f0fc7b8fe1549475426900000000000000009943dbcb69b56c82
+6d4e4f1ea0401a1b00000000000000000000000000000000ed6e715623dd
+d9902c28aecc68c8e737c3569b330868da17b7112fc4bbc26aa830dbff54
+b8d8e4e40093b0695b97a01fee3b52f6a32c0d5a3d3c1ef8ff88a12f63a0
+831c78680078fbb1e15648827536
\ No newline at end of file
diff --git a/examples/dmariommu.json b/examples/dmariommu.json
index 37c7532..9bbc92c 100644
--- a/examples/dmariommu.json
+++ b/examples/dmariommu.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": true
},
"fruID": "d6637073-083b-a79c-307e-8ac060e64bf4",
- "fruText": " \u0004#4I\u0016\"W]cL#\u0010uB$tk",
+ "fruText": " #4I\"W]cL#uB$tk",
"revision": {
"major": 40,
"minor": 107
diff --git a/examples/dmarvtd.cperhex b/examples/dmarvtd.cperhex
index 32a1a8a..c70c22f 100644
--- a/examples/dmarvtd.cperhex
+++ b/examples/dmarvtd.cperhex
@@ -1,11 +1,12 @@
-435045520000ffffffff01000000000003000000580100005800120015017356
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-bd3d771500000000040000000000000000000000000000000000000000000000
-c8000000900000006b28030090000000371d7671b232cd45a7d0b0fedd93e8cf
-737063d63b089ca7307e8ac060e64bf40300000020042334491622577f5d634c
-2310754224746b0071dbd0603225daa119b7e2cdb151f0fc7b8fe15494754269
-365d829009be737a9943dbcb00000000000000000000000000f06f6370b1cda6
-0f4f00000daa9306ed6e715623ddd9902c28aecc68c8e737c3569b330868da17
-b7112fc4bbc26aa830dbff54b8d8e4e40093b0695b97a01fee3b52f6a32c0d5a
-3d3c1ef8ff88a12f63a0831c78680078fbb1e15648827536
\ No newline at end of file
+435045520000ffffffff0100000000000300000058010000580012001501
+735600000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000bd3d77150000000004000000000000000000000000000000
+0000000000000000c8000000900000006b28030090000000371d7671b232
+cd45a7d0b0fedd93e8cf737063d63b089ca7307e8ac060e64bf403000000
+2023344922575d634c23754224746b000000000071dbd0603225daa119b7
+e2cdb151f0fc7b8fe15494754269365d829009be737a9943dbcb00000000
+000000000000000000f06f6370b1cda60f4f00000daa9306ed6e715623dd
+d9902c28aecc68c8e737c3569b330868da17b7112fc4bbc26aa830dbff54
+b8d8e4e40093b0695b97a01fee3b52f6a32c0d5a3d3c1ef8ff88a12f63a0
+831c78680078fbb1e15648827536
\ No newline at end of file
diff --git a/examples/dmarvtd.json b/examples/dmarvtd.json
index 64f0947..d7daf6b 100644
--- a/examples/dmarvtd.json
+++ b/examples/dmarvtd.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": true
},
"fruID": "d6637073-083b-a79c-307e-8ac060e64bf4",
- "fruText": " \u0004#4I\u0016\"W]cL#\u0010uB$tk",
+ "fruText": " #4I\"W]cL#uB$tk",
"revision": {
"major": 40,
"minor": 107
diff --git a/examples/firmware.cperhex b/examples/firmware.cperhex
index a196f95..9c529fb 100644
--- a/examples/firmware.cperhex
+++ b/examples/firmware.cperhex
@@ -1,8 +1,8 @@
-435045520000ffffffff01000300000003000000e80000001300110030064103
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-435b8e3100000000040000000000000000000000000000000000000000000000
-c800000020000000fb6f0300b1000000962a2181ed09964994718d729c8e69ed
-28aecc68c8e737c3569b330868da17b70300000060250f2a0b6d771e0b53305e
-01176c0e7a6e1900020200000000000000000000000000007b8fe15494754269
-365d829009be737a
\ No newline at end of file
+435045520000ffffffff01000300000003000000e8000000130011003006
+410300000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000435b8e310000000004000000000000000000000000000000
+0000000000000000c800000020000000fb6f0300b1000000962a2181ed09
+964994718d729c8e69ed28aecc68c8e737c3569b330868da17b703000000
+60252a6d7753305e6c7a6e00000000000000000002020000000000000000
+0000000000007b8fe15494754269365d829009be737a
\ No newline at end of file
diff --git a/examples/firmware.json b/examples/firmware.json
index d153e0f..0139905 100644
--- a/examples/firmware.json
+++ b/examples/firmware.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": true
},
"fruID": "68ccae28-e7c8-c337-569b-330868da17b7",
- "fruText": "`%\u000f*\u000bmw\u001e\u000bS0^\u0001\u0017l\u000ezn\u0019",
+ "fruText": "`%*mwS0^lzn",
"revision": {
"major": 111,
"minor": 251
diff --git a/examples/generic.cperhex b/examples/generic.cperhex
index f9dbb5d..c9bc970 100644
--- a/examples/generic.cperhex
+++ b/examples/generic.cperhex
@@ -1,13 +1,14 @@
-435045520000ffffffff01000100000003000000880100000600100029055116
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-c7c9301d00000000040000000000000000000000000000000000000000000000
-c8000000c0000000891003003c000000adcc7698b447db4bb65e16f193c4f3db
-3f31bb02440035ce1072b64c16442050020000004c204c49322133797c5a456d
-381a2f2f2f1922005515000000000000c0c52bb501870000e65ae1c721bab0aa
-14064c1c0f736e4d0c3767567c7d2974337b5c6c4f3a4066135c755e05636310
-68272b7712113c1d471b733c18143042070c2e563d653c48392a1e3d0d014d75
-2777643809184d472a380341433203493528176a0d4b3246744f7a0148476d66
-3f49173f605b06021309424d323c165f5b2549606f721e6339185b0157495f00
-1f53254682d5a0589b67b70612ae18090235981282d39eff507a3921e825df07
-78054dfadaee5275
\ No newline at end of file
+435045520000ffffffff0100010000000300000088010000060010002905
+511600000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000c7c9301d0000000004000000000000000000000000000000
+0000000000000000c8000000c0000000891003003c000000adcc7698b447
+db4bb65e16f193c4f3db3f31bb02440035ce1072b64c1644205002000000
+4c204c49322133797c5a456d382f2f2f220000005515000000000000c000
+2b0001000000e65ae1c721bab0aa00000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000001f53254682d5a058
+00000000000000000235981282d39eff000000000000000078054dfadaee
+5275
\ No newline at end of file
diff --git a/examples/generic.json b/examples/generic.json
index 8ce1ec4..91ce386 100644
--- a/examples/generic.json
+++ b/examples/generic.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": true
},
"fruID": "02bb313f-0044-ce35-1072-b64c16442050",
- "fruText": "L LI2!3y|ZEm8\u001a///\u0019\"",
+ "fruText": "L LI2!3y|ZEm8///\"",
"revision": {
"major": 16,
"minor": 137
diff --git a/examples/ia32x64.cperhex b/examples/ia32x64.cperhex
index e15f789..8ab1ff9 100644
--- a/examples/ia32x64.cperhex
+++ b/examples/ia32x64.cperhex
@@ -1,35 +1,37 @@
-435045520000ffffffff01000100000003000000500400001200080003061926
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-dc3fe02e00000000040000000000000000000000000000000000000000000000
-c800000088030000c35003009a000000b0a03edc44a19747b95b53fa242b6e1d
-c3beb8f61f0403e3551075ef5b8618ca00000000653e6e431d765d3a15760b76
-660b315c64040a000e04000000000000c46be571ff2975ecf5f02acb531cb93a
-2826be5c8638198d4d056fbd5299c91704ae8803d8fdefcd0000000000000000
-0000000000000000f50157a5efe3de43ac72249b573fad2c1500000000000000
-ff00df3f00000000451627e8e0c46888dc843441b106cee276491716077a5cc0
-8d8b03cbc551580ab3f8f31cb1c5a249aa595eef92ffa63c1500000000000000
-ff07dfff070000004144789b15987a1af90a25297ca6a1053e210932619ab1a4
-f7f639ac4435e08535b506fc1f5e62459f250a3b9adb63c31500000000000000
-ff00df3f0000000077539712fc81b7ca94d83f48fef11e2ed656f96c32baf847
-28c891761e561c950300f40070c836af1135a12f6377855ce3b717dbfe3fa390
-b5c2e6d1578f85ff35b95da682945593c9f6c22c6d488950ffa02bfedfcf8e94
-917465e803eae739a445df26d934b9a22b7bce98c357e9c3f714c1d6e34f6a74
-c3d05dc6ba44ff5e89de8462133d043eb9d3d67c2abf3f22d400f8b74f632c12
-3389d9edcdd84c57b7d0b9ca0ebe08c791de43bb9e83dd7283d629d33955e56c
-debe59ac0000000076bc18847a204b0bfe8ec79c11a40e957a3868b38d4d1f6c
-0c7918a31e1bf194d709185229635d27f224c403c9d298430a00f7984e16045a
-8f1cfdae37ee420ef75b6020bebe47b0e20bb4abde4cefe84de6809bfc84f58c
-a0f23ad7e07ce6d7d746f7960400400092284781109467912f641524f0b6162a
-8df6a673cd7ebac414be025aa54c5538749cb9853021165f852b8375e1999f6f
-8f45e25cc39c20d75b2232006f8738e323f26853137eb298aa350d8b06002000
-b9b579d98cd4fbbed56a450d4e68ffb6bb12356daadfa2b76a706365cd554286
-0abb5f96905b5565c59a72130300f400ff2c2fdecee6483f4aad0c9fef93a9ab
-f23f3b4d94a0132f12263284f0f009ef1c38cdeb1e162a68c33607b3c9b05ebc
-f0990984391cb34b43e5d033d6d923f211f0dd2f060798ca3e9f7d0750dbc340
-74cdc4ade978f82c5dc86033a18326b27303e27a0b7a444919c150699c14a910
-e16ebdcae6b5f7437e57771fda9dd24da0b4c7ab2e0bf447cc45b168595a783a
-c83504aeebfbf26900000000065a7aa60e41523c4d4684198b3582e48ffa1e58
-3023061b1ef88471610c9d6767170e755960b2a6a636bf326b4116fa3c35526c
-58598776510be7b317851a7e9c28f4f588a69b2fdc5b61479c7741d8ac944404
-edcb7b3ed662f1eee70c6c84346079bd
\ No newline at end of file
+435045520000ffffffff0100010000000300000050040000120008000306
+192600000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000dc3fe02e0000000004000000000000000000000000000000
+0000000000000000c800000088030000c35003009a000000b0a03edc44a1
+9747b95b53fa242b6e1dc3beb8f61f0403e3551075ef5b8618ca00000000
+653e6e43765d3a767666315c64000000000000000e040000000000000000
+000000000000f5f02acb531cb93a2826be5c8638198d4d056fbd5299c917
+04ae8803d8fdefcd00000000000000000000000000000000f50157a5efe3
+de43ac72249b573fad2c1500000000000000ff00df3f0000000000000000
+00000000dc843441b106cee200000000000000008d8b03cbc551580ab3f8
+f31cb1c5a249aa595eef92ffa63c1500000000000000ff07dfff07000000
+0000000000000000f90a25297ca6a1050000000000000000f7f639ac4435
+e08535b506fc1f5e62459f250a3b9adb63c31500000000000000ff00df3f
+00000000000000000000000094d83f48fef11e2e000000000000000028c8
+91761e561c950300f40070c836af1135a12f6377855ce3b717dbfe3fa390
+b5c2e6d1578f85ff35b95da682945593c9f6c22c6d488950ffa02bfedfcf
+8e94917465e803eae739a445df26d934b9a22b7bce98c357e9c3f714c1d6
+e34f6a74c3d05dc6ba44ff5e89de8462133d043eb9d3d67c2abf3f22d400
+f8b74f632c123389d9edcdd84c57b7d0b9ca0ebe08c791de43bb9e83dd72
+83d629d33955e56cdebe59ac0000000076bc18847a204b0bfe8ec79c11a4
+0e957a3868b38d4d1f6c0c7918a31e1bf194d709185229635d27f224c403
+c9d298430a00f7984e16045a8f1cfdae37ee420ef75b6020bebe47b0e20b
+b4abde4cefe84de6809bfc84f58ca0f23ad7e07ce6d7d746f79604004000
+92284781109467912f641524f0b6162a8df6a673cd7ebac414be025aa54c
+5538749cb9853021165f852b8375e1999f6f8f45e25cc39c20d75b223200
+6f8738e323f26853137eb298aa350d8b06002000b9b579d98cd4fbbed56a
+450d4e68ffb6bb12356daadfa2b76a706365cd5542860abb5f96905b5565
+c59a72130300f400ff2c2fdecee6483f4aad0c9fef93a9abf23f3b4d94a0
+132f12263284f0f009ef1c38cdeb1e162a68c33607b3c9b05ebcf0990984
+391cb34b43e5d033d6d923f211f0dd2f060798ca3e9f7d0750dbc34074cd
+c4ade978f82c5dc86033a18326b27303e27a0b7a444919c150699c14a910
+e16ebdcae6b5f7437e57771fda9dd24da0b4c7ab2e0bf447cc45b168595a
+783ac83504aeebfbf26900000000065a7aa60e41523c4d4684198b3582e4
+8ffa1e583023061b1ef88471610c9d6767170e755960b2a6a636bf326b41
+16fa3c35526c58598776510be7b317851a7e9c28f4f588a69b2fdc5b6147
+9c7741d8ac944404edcb7b3ed662f1eee70c6c84346079bd
\ No newline at end of file
diff --git a/examples/ia32x64.json b/examples/ia32x64.json
index ebc1393..c0dc0b4 100644
--- a/examples/ia32x64.json
+++ b/examples/ia32x64.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": true
},
"fruID": "f6b8bec3-041f-e303-5510-75ef5b8618ca",
- "fruText": "e>nC\u001dv]:\u0015v\u000bvf\u000b1\\d\u0004\n",
+ "fruText": "e>nCv]:vvf1\\d",
"revision": {
"major": 80,
"minor": 195
diff --git a/examples/memory.cperhex b/examples/memory.cperhex
index 16aa8ca..4cccced 100644
--- a/examples/memory.cperhex
+++ b/examples/memory.cperhex
@@ -1,9 +1,10 @@
-435045520000ffffffff01000300000003000000180100005700080007032408
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-9b66466a00000000040000000000000000000000000000000000000000000000
-c800000050000000ff540300e40000001411bca5646fde4eb8633e83ed7c83b1
-1ef8ff88a12f63a0831c78680078fbb1020000001e1b336b67775a41084e0663
-12225c5b675e1a00555527000000000000136200000000007b8fe15494754269
-365d829009be737a9943dbcb69b56c826d4e4f1ea0401a1bcffb6f6370b1cda6
-0f4f37180daa93a6ed6e715623ddd9900320aecc68c8e737
\ No newline at end of file
+435045520000ffffffff0100030000000300000018010000570008000703
+240800000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+0000000000009b66466a0000000004000000000000000000000000000000
+0000000000000000c800000050000000ff540300e40000001411bca5646f
+de4eb8633e83ed7c83b11ef8ff88a12f63a0831c78680078fbb102000000
+336b67775a414e63225c5b675e0000000000000055552700000000000013
+6200000000000000000000000000365d829009be737a0000dbcb00006c82
+00004f1e00001a1b00000000000000000f4f37180daa93a6000000000000
+00000320000068c8e737
\ No newline at end of file
diff --git a/examples/memory.json b/examples/memory.json
index ab665c2..aa02d59 100644
--- a/examples/memory.json
+++ b/examples/memory.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": false
},
"fruID": "88fff81e-2fa1-a063-831c-78680078fbb1",
- "fruText": "\u001e\u001b3kgwZA\bN\u0006c\u0012\"\\[g^\u001a",
+ "fruText": "3kgwZANc\"\\[g^",
"revision": {
"major": 84,
"minor": 255
diff --git a/examples/memory2.cperhex b/examples/memory2.cperhex
index ff2d630..8965ab9 100644
--- a/examples/memory2.cperhex
+++ b/examples/memory2.cperhex
@@ -1,10 +1,10 @@
-435045520000ffffffff01000000000003000000280100003200040030092892
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-54b3d93800000000040000000000000000000000000000000000000000000000
-c800000060000000f6a303005a000000fc04ec61e64813d825c98daa44750b12
-5648827536bdc82c61f439bb3276da2a030000005e1a1d76531e3e6b160d6f1c
-5d59316f041c4e00555505000000000000186200000000007b8fe15494754269
-365d829009be737a9943dbcb69b56c826d4e4f1ea0401a1bcffb6f6370b1cda6
-0f4f37180d000100ed6e715623ddd9902c28aecc68c8e737c3569b330868da17
-b7112fc4bbc26aa8
\ No newline at end of file
+435045520000ffffffff0100000000000300000028010000320004003009
+289200000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+00000000000054b3d9380000000004000000000000000000000000000000
+0000000000000000c800000060000000f6a303005a000000fc04ec61e648
+13d825c98daa44750b125648827536bdc82c61f439bb3276da2a03000000
+5e76533e6b6f5d59316f4e00000000000000000057550500000000000018
+6200000000007b8fe15494754269365d829009be737a0000dbcb00006c82
+00000000a0401a1b0000000070b1cda6000000000d000100000000000000
+00002c28aecc68c8e7370000000000000000b7112fc400000000
\ No newline at end of file
diff --git a/examples/memory2.json b/examples/memory2.json
index c14bddc..5213cf3 100644
--- a/examples/memory2.json
+++ b/examples/memory2.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": true
},
"fruID": "75824856-bd36-2cc8-61f4-39bb3276da2a",
- "fruText": "^\u001a\u001dvS\u001e>k\u0016\ro\u001c]Y1o\u0004\u001cN",
+ "fruText": "^vS>ko]Y1oN",
"revision": {
"major": 163,
"minor": 246
diff --git a/examples/nvidia.cperhex b/examples/nvidia.cperhex
index 62817a7..34bcbb6 100644
--- a/examples/nvidia.cperhex
+++ b/examples/nvidia.cperhex
@@ -1,11 +1,11 @@
-435045520000ffffffff01000300000003000000480100001500010003092848
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-a08dc95400000000040000000000000000000000000000000000000000000000
-c800000080000000c82c030039000000f244526d1227ec11bea7cb3fdb95c786
-3de1dcbf57127d1f3fde13789945ee73020000001508322975053e346f543856
-6f15272004233400504349652d44504300000000000000007b8fe15400750600
-365d829009be737a9943dbcb69b56c826d4e4f1ea0401a1bcffb6f6370b1cda6
-0f4f37180daa93a6ed6e715623ddd9902c28aecc68c8e737c3569b330868da17
-b7112fc4bbc26aa830dbff54b8d8e4e40093b0695b97a01fee3b52f6a32c0d5a
-3d3c1ef8ff88a12f
\ No newline at end of file
+435045520000ffffffff0100030000000300000048010000150001000309
+284800000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000a08dc9540000000004000000000000000000000000000000
+0000000000000000c800000080000000c82c030039000000f244526d1227
+ec11bea7cb3fdb95c7863de1dcbf57127d1f3fde13789945ee7302000000
+3229753e346f5438566f27202334000000000000504349652d4450430000
+0000000000007b8fe15400750600365d829009be737a9943dbcb69b56c82
+6d4e4f1ea0401a1bcffb6f6370b1cda60f4f37180daa93a6ed6e715623dd
+d9902c28aecc68c8e737c3569b330868da17b7112fc4bbc26aa830dbff54
+b8d8e4e40093b0695b97a01fee3b52f6a32c0d5a3d3c1ef8ff88a12f
\ No newline at end of file
diff --git a/examples/nvidia.json b/examples/nvidia.json
index 68efbfd..a2826a1 100644
--- a/examples/nvidia.json
+++ b/examples/nvidia.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": true
},
"fruID": "bfdce13d-1257-1f7d-3fde-13789945ee73",
- "fruText": "\u0015\b2)u\u0005>4oT8Vo\u0015' \u0004#4",
+ "fruText": "2)u>4oT8Vo' #4",
"revision": {
"major": 44,
"minor": 200
diff --git a/examples/pcibus.cperhex b/examples/pcibus.cperhex
index f402b12..64ae4d1 100644
--- a/examples/pcibus.cperhex
+++ b/examples/pcibus.cperhex
@@ -1,9 +1,10 @@
-435045520000ffffffff01000000000003000000100100001000040016089276
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-ae8a8f5600000000040000000000000000000000000000000000000000000000
-c8000000480000002fc403006a000000633975c5843b9540bf78eddad3f9c9dd
-52f6a32c0d5a3d3c1ef8ff88a12f63a002000000482001560506516a1e1b336b
-67775a41084e0600550100000000000000116200000000000400e15400000000
-365d829009be737a9943dbcb69b56c820000000000000001cffb6f6370b1cda6
-0f4f37180daa93a6ed6e715623ddd990
\ No newline at end of file
+435045520000ffffffff0100000000000300000010010000100004001608
+927600000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000ae8a8f560000000004000000000000000000000000000000
+0000000000000000c8000000480000002fc403006a000000633975c5843b
+9540bf78eddad3f9c9dd52f6a32c0d5a3d3c1ef8ff88a12f63a002000000
+482056516a336b67775a414e000000000000000055010000000000000011
+6200000000000000e1540000000000000000000000009943dbcb69b56c82
+0000000000000000cffb6f6370b1cda60000000000000000ed6e715623dd
+d990
\ No newline at end of file
diff --git a/examples/pcibus.json b/examples/pcibus.json
index d4f3d57..4bdbcfa 100644
--- a/examples/pcibus.json
+++ b/examples/pcibus.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": false
},
"fruID": "2ca3f652-5a0d-3c3d-1ef8-ff88a12f63a0",
- "fruText": "H \u0001V\u0005\u0006Qj\u001e\u001b3kgwZA\bN\u0006",
+ "fruText": "H VQj3kgwZAN",
"revision": {
"major": 196,
"minor": 47
diff --git a/examples/pcidev.json b/examples/pcidev.json
index ee92ce3..a1bb2aa 100644
--- a/examples/pcidev.json
+++ b/examples/pcidev.json
@@ -38,7 +38,6 @@
"resourceNotAccessible": false
},
"fruID": "bb39f461-7632-2ada-7562-cba4c66b28e2",
- "fruText": "\u0016\ro\u001c]Y1o\u0004\u001cNsv\u000fr<\u0014ME",
"revision": {
"major": 255,
"minor": 248
diff --git a/examples/pcie.cperhex b/examples/pcie.cperhex
index 0ddfe3b..921660c 100644
--- a/examples/pcie.cperhex
+++ b/examples/pcie.cperhex
@@ -1,13 +1,14 @@
-435045520000ffffffff01000000000003000000980100001300210026041255
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-9a7f435b00000000040000000000000000000000000000000000000000000000
-c8000000d00000009cbf0300e300000054e995d9c1bb0f43ad91b44dcb3c6f35
-6668938aa36c6e3f2b9dcf0ef92fd4d80200000048493c43480a02686e353b6f
-5c022d6c276d1200550000000000000007000000336200007b8fe15400000000
-365d829009be737a9943dbcb69b06c006d4e4f1ea0401a1bcffb6f6370b1cda6
-0f4f37180daa93a6ed6e715623ddd9902c28aecc68c8e737c3569b330868da17
-b7112fc4bbc26aa830dbff54b8d8e4e40093b0695b97a01fee3b52f6a32c0d5a
-3d3c1ef8ff88a12f63a0831c78680078fbb1e15648827536bdc82c61f439bb32
-76da2a7562cba4c66b28e2e390e25c8b933de1dcbf57127d1f3fde13789945ee
-737063d63b089ca7307e8ac060e64bf4242cd0e383e260a2
\ No newline at end of file
+435045520000ffffffff0100000000000300000098010000130021002604
+125500000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+0000000000009a7f435b0000000004000000000000000000000000000000
+0000000000000000c8000000d00000009cbf0300e300000054e995d9c1bb
+0f43ad91b44dcb3c6f356668938aa36c6e3f2b9dcf0ef92fd4d802000000
+48493c4348686e353b6f5c2d6c276d000000000055000000000000000700
+0000000000007b8fe1540000000000000000000000000000000000000000
+6d4e4f1ea0401a1b0000000070b1cda60f4f37180daa93a6ed6e715623dd
+d9902c28aecc68c8e737c3569b330868da17b7112fc4bbc26aa830dbff54
+b8d8e4e40093b0695b97a01f000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000
\ No newline at end of file
diff --git a/examples/pcie.json b/examples/pcie.json
index 2a1963e..4318600 100644
--- a/examples/pcie.json
+++ b/examples/pcie.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": false
},
"fruID": "8a936866-6ca3-3f6e-2b9d-cf0ef92fd4d8",
- "fruText": "HI<CH\n\u0002hn5;o\\\u0002-l'm\u0012",
+ "fruText": "HI<CHhn5;o\\-l'm",
"revision": {
"major": 191,
"minor": 156
diff --git a/examples/unknown.cperhex b/examples/unknown.cperhex
index 2a32da8..42fda91 100644
--- a/examples/unknown.cperhex
+++ b/examples/unknown.cperhex
@@ -1,10 +1,11 @@
-435045520000ffffffff01000200000003000000390100005200060005020047
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-52084c2900000000040000000000000000000000000000000000000000000000
-c800000071000000831c030000000000e15648827536bdc82c61f439bb3276da
-2a7562cba4c66b28e2e390e25c8b933d020000006f041c4e73760f723c144d45
-2d29201508322900dbd0603225daa119b7e2cdb151f0fc7b8fe1549475426936
-5d829009be737a9943dbcb69b56c826d4e4f1ea0401a1bcffb6f6370b1cda60f
-4f37180daa93a6ed6e715623ddd9902c28aecc68c8e737c3569b330868da17b7
-112fc4bbc26aa830dbff54b8d8e4e40093b0695b97a01fee3b
\ No newline at end of file
+435045520000ffffffff0100020000000300000039010000520006000502
+004700000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000
+00000000000052084c290000000004000000000000000000000000000000
+0000000000000000c800000071000000831c030000000000e15648827536
+bdc82c61f439bb3276da2a7562cba4c66b28e2e390e25c8b933d02000000
+6f4e7376723c4d452d2920322900000000000000dbd0603225daa119b7e2
+cdb151f0fc7b8fe15494754269365d829009be737a9943dbcb69b56c826d
+4e4f1ea0401a1bcffb6f6370b1cda60f4f37180daa93a6ed6e715623ddd9
+902c28aecc68c8e737c3569b330868da17b7112fc4bbc26aa830dbff54b8
+d8e4e40093b0695b97a01fee3b
\ No newline at end of file
diff --git a/examples/unknown.json b/examples/unknown.json
index a2f20a1..22cecb3 100644
--- a/examples/unknown.json
+++ b/examples/unknown.json
@@ -38,7 +38,7 @@
"resourceNotAccessible": false
},
"fruID": "cb62752a-c6a4-286b-e2e3-90e25c8b933d",
- "fruText": "o\u0004\u001cNsv\u000fr<\u0014ME-) \u0015\b2)",
+ "fruText": "oNsvr<ME-) 2)",
"revision": {
"major": 28,
"minor": 131
diff --git a/generator/cper-generate.c b/generator/cper-generate.c
index 2cee1e0..b7f9596 100644
--- a/generator/cper-generate.c
+++ b/generator/cper-generate.c
@@ -148,8 +148,8 @@
//Ensure the FRU text is not null terminated early.
for (int i = 0; i < 20; i++) {
- // FRU string can only be ASCII
- descriptor->FruString[i] = rand() % 127 + 1;
+ // FRU string can only be printable ASCII
+ descriptor->FruString[i] = rand() % (0x7f - 0x20) + 0x20;
//Null terminate last byte.
if (i == 19) {
diff --git a/generator/sections/gen-section-arm.c b/generator/sections/gen-section-arm.c
index ded953d..a4b817d 100644
--- a/generator/sections/gen-section-arm.c
+++ b/generator/sections/gen-section-arm.c
@@ -85,9 +85,9 @@
//vendor specific
for (size_t i = 0; i < vendor_info_len; i++) {
- //Ensure only ascii is used so we don't
+ //Ensure only printable ascii is used so we don't
// fail base64E
- *cur_pos = cper_rand() % 127 + 1;
+ *cur_pos = cper_rand() % (0x7f - 0x20) + 0x20;
cur_pos += 1;
}
diff --git a/generator/sections/gen-section-generic.c b/generator/sections/gen-section-generic.c
index 4d25559..e19cd8a 100644
--- a/generator/sections/gen-section-generic.c
+++ b/generator/sections/gen-section-generic.c
@@ -32,8 +32,8 @@
//Ensure CPU brand string does not terminate early.
for (int i = 0; i < 128; i++) {
UINT8 *byte = start_byte + 24 + i;
- //Ensure only ascii is used
- *byte = cper_rand() % 127 + 1;
+ //Ensure only printable ascii is used
+ *byte = cper_rand() % (0x7f - 0x20) + 0x20;
//Null terminate last byte.
if (i == 127) {