Skip to content

Commit ebfcff3

Browse files
committed
Fix handling of trailing spaces when decoding PEM files
Reported via [0]. [0] DCIT/perl-CryptX#110 (comment) Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
1 parent 31a48d0 commit ebfcff3

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

src/misc/pem/pem_read.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,25 @@ static void s_unget_line(char *buf, unsigned long buflen, struct get_char *g)
4343
COPY_STR(g->unget_buf, buf, buflen);
4444
}
4545

46+
static void s_tts(char *buf, unsigned long *buflen)
47+
{
48+
while(1) {
49+
unsigned long blen = *buflen;
50+
if (blen < 2)
51+
return;
52+
blen--;
53+
switch (buf[blen]) {
54+
case ' ':
55+
case '\t':
56+
buf[blen] = '\0';
57+
*buflen = blen;
58+
break;
59+
default:
60+
return;
61+
}
62+
}
63+
}
64+
4665
static char* s_get_line(char *buf, unsigned long *buflen, struct get_char *g)
4766
{
4867
unsigned long blen = 0;
@@ -64,11 +83,13 @@ static char* s_get_line(char *buf, unsigned long *buflen, struct get_char *g)
6483
if (c_ == '\r') {
6584
buf[--blen] = '\0';
6685
}
86+
s_tts(buf, &blen);
6787
*buflen = blen;
6888
return buf;
6989
}
7090
if (c == -1 || c == '\0') {
7191
buf[blen] = '\0';
92+
s_tts(buf, &blen);
7293
*buflen = blen;
7394
return buf;
7495
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEowIBAAKCAQEAs2jsmIoFuWzMkilJaA8//5/T30cnuzX9GImXUrFR2k9EKTMt
3+
GMHCdKlWOl3BV+BTAU9TLz7Jzd/iJ5GJ6B8TrH1PHFmHpy8/qE/S5OhinIpIi7eb
4+
ABqnoVcwDdCa8ugzq8k8SWxhRNXfVIlwz4NH1caJ8lmiERFj7IvNKqEhzAk0pyDr
5+
8hubveTC39xREujKlsqutpPAFPJ3f2ybVsdykX5rx0h5SslG3jVWYhZ/SOb2aIzO
6+
r0RMjhQmsYRwbpt3anjlBZ98aOzg7GAkbO8093X5VVk9vaPRg0zxJQ0Do0YLyzkR
7+
isSAIFb0tdKuDnjRGK6y/N2j6At2HjkxntbtGQIDAQABAoIBADYq6LxJd977LWy3
8+
0HT9nboFPIf+SM2qSEc/S5Po+6ipJBA4ZlZCMf7dHa6znet1TDpqA9iQ4YcqIHMH
9+
6xZNQ7hhgSAzG9TrXBHqP+djDlrrGWotvjuy0IfS9ixFnnLWjrtAH9afRWLuG+a/
10+
NHNC1M6DiiTE0TzL/lpt/zzut3CNmWzH+t19X6UsxUg95AzooEeewEYkv25eumWD
11+
mfQZfCtSlIw1sp/QwxeJa/6LJw7KcPZ1wXUm1BN0b9eiKt9Cmni1MS7elgpZlgGt
12+
xtfGTZtNLQ7bgDiM8MHzUfPBhbceNSIx2BeCuOCs/7eaqgpyYHBbAbuBQex2H61l
13+
Lcc3Tz0CgYEA4Kx/avpCPxnvsJ+nHVQm5d/WERuDxk4vH1DNuCYBvXTdVCGADf6a
14+
F5No1JcTH3nPTyPWazOyGdT9LcsEJicLyD8vCM6hBFstG4XjqcAuqG/9DRsElpHQ
15+
yi1zc5DNP7Vxmiz9wII0Mjy0abYKtxnXh9YK4a9g6wrcTpvShhIcIb8CgYEAzGzG
16+
lorVCfX9jXULIznnR/uuP5aSnTEsn0xJeqTlbW0RFWLdj8aIL1peirh1X89HroB9
17+
GeTNqEJXD+3CVL2cx+BRggMDUmEz4hR59meZCDGUyT5fex4LIsceb/ESUl2jo6Sw
18+
HXwWbN67rQ55N4oiOcOppsGxzOHkl5HdExKidycCgYEAr5Qev2tz+fw65LzfzHvH
19+
Kj4S/KuT/5V6He731cFd+sEpdmX3vPgLVAFPG1Q1DZQT/rTzDDQKK0XX1cGiLG63
20+
NnaqOye/jbfzOF8Z277kt51NFMDYhRLPKDD82IOA4xjY/rPKWndmcxwdob8yAIWh
21+
efY76sMz6ntCT+xWSZA9i+ECgYBWMZM2TIlxLsBfEbfFfZewOUWKWEGvd9l5vV/K
22+
D5cRIYivfMUw5yPq2267jPUolayCvniBH4E7beVpuPVUZ7KgcEvNxtlytbt7muil
23+
5Z6X3tf+VodJ0Swe2NhTmNEB26uwxzLe68BE3VFCsbSYn2y48HAq+MawPZr18bHG
24+
ZfgMxwKBgHHRg6HYqF5Pegzk1746uH2G+OoCovk5ylGGYzcH2ghWTK4agCHfBcDt
25+
EYqYAev/l82wi+OZ5O8U+qjFUpT1CVeUJdDs0o5u19v0UJjunU1cwh9jsxBZAWLy
26+
PAGd6SWf4S3uQCTw6dLeMna25YIlPh5qPA6I/pAahe8e3nSu2ckl
27+
-----END RSA PRIVATE KEY-----

0 commit comments

Comments
 (0)