From: Thomas Pornin Date: Mon, 21 Nov 2016 15:04:26 +0000 (+0100) Subject: Fixed handling of CR+LF line endings in PEM objects. X-Git-Tag: v0.4~47 X-Git-Url: https://www.bearssl.org/gitweb//home/git/?p=BearSSL;a=commitdiff_plain;h=292f43357850dbadd1f7e8a343415a707af3a800 Fixed handling of CR+LF line endings in PEM objects. --- diff --git a/src/codec/pemdec.c b/src/codec/pemdec.c index 1dbdf95..3623117 100644 --- a/src/codec/pemdec.c +++ b/src/codec/pemdec.c @@ -165,15 +165,16 @@ static const uint8_t t0_codeblock[] = { 0x1A, 0x01, 0x80, 0x7A, 0x0B, 0x10, 0x06, 0x03, 0x01, 0x20, 0x08, 0x00, 0x01, 0x14, 0x03, 0x00, 0x1A, 0x17, 0x05, 0x05, 0x1F, 0x2E, 0x01, 0x00, 0x00, 0x2C, 0x14, 0x01, 0x0A, 0x0D, 0x06, 0x06, 0x1F, 0x02, 0x00, 0x1A, - 0x08, 0x00, 0x2A, 0x17, 0x19, 0x1D, 0x1A, 0x1E, 0x1A, 0x04, 0x62, 0x00, - 0x18, 0x14, 0x1C, 0x05, 0x01, 0x00, 0x13, 0x11, 0x04, 0x76, 0x00, 0x20, - 0x19, 0x11, 0x00, 0x00, 0x2C, 0x01, 0x0A, 0x0C, 0x06, 0x02, 0x04, 0x78, - 0x00, 0x01, 0x01, 0x7F, 0x03, 0x00, 0x2C, 0x14, 0x01, 0x0A, 0x0C, 0x06, - 0x09, 0x31, 0x05, 0x04, 0x01, 0x00, 0x03, 0x00, 0x04, 0x70, 0x13, 0x02, - 0x00, 0x00, 0x00, 0x14, 0x06, 0x14, 0x1E, 0x14, 0x21, 0x07, 0x16, 0x01, - 0x2D, 0x0C, 0x06, 0x08, 0x21, 0x07, 0x1D, 0x01, 0x00, 0x1A, 0x19, 0x00, - 0x04, 0x69, 0x21, 0x19, 0x00, 0x00, 0x14, 0x01, 0x0A, 0x0C, 0x1A, 0x01, - 0x20, 0x0B, 0x10, 0x00 + 0x08, 0x00, 0x14, 0x01, 0x0D, 0x0D, 0x06, 0x03, 0x13, 0x04, 0x03, 0x2A, + 0x17, 0x19, 0x1D, 0x1A, 0x1E, 0x1A, 0x04, 0x59, 0x00, 0x18, 0x14, 0x1C, + 0x05, 0x01, 0x00, 0x13, 0x11, 0x04, 0x76, 0x00, 0x20, 0x19, 0x11, 0x00, + 0x00, 0x2C, 0x01, 0x0A, 0x0C, 0x06, 0x02, 0x04, 0x78, 0x00, 0x01, 0x01, + 0x7F, 0x03, 0x00, 0x2C, 0x14, 0x01, 0x0A, 0x0C, 0x06, 0x09, 0x31, 0x05, + 0x04, 0x01, 0x00, 0x03, 0x00, 0x04, 0x70, 0x13, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x06, 0x14, 0x1E, 0x14, 0x21, 0x07, 0x16, 0x01, 0x2D, 0x0C, 0x06, + 0x08, 0x21, 0x07, 0x1D, 0x01, 0x00, 0x1A, 0x19, 0x00, 0x04, 0x69, 0x21, + 0x19, 0x00, 0x00, 0x14, 0x01, 0x0A, 0x0C, 0x1A, 0x01, 0x20, 0x0B, 0x10, + 0x00 }; static const uint16_t t0_caddr[] = { @@ -193,12 +194,12 @@ static const uint16_t t0_caddr[] = { 530, 540, 559, - 594, - 605, - 610, - 620, - 645, - 672 + 603, + 614, + 619, + 629, + 654, + 681 }; #define T0_INTERPRETED 28 diff --git a/src/codec/pemdec.t0 b/src/codec/pemdec.t0 index 7a0798c..ba4a9e2 100644 --- a/src/codec/pemdec.t0 +++ b/src/codec/pemdec.t0 @@ -144,7 +144,8 @@ cc: read8-native ( -- x ) { begin over ifnot 2drop skip-newline 0 ret then read8 dup `\n = if 2drop orig-len swap - ret then - norm-upper over set8 1+ swap 1- swap + dup `\r = if drop else norm-upper over set8 then + 1+ swap 1- swap again ; \ Remove trailing dashes from the name buffer.