Small improvement to tolerate PEM files missing the terminating newline in the brssl command-line tool.
This commit is contained in:
parent
5281cd0f58
commit
c1d1306e27
1 changed files with 15 additions and 0 deletions
|
|
@ -171,6 +171,7 @@ decode_pem(const void *src, size_t len, size_t *num)
|
|||
const unsigned char *buf;
|
||||
bvector bv = VEC_INIT;
|
||||
int inobj;
|
||||
int extra_nl;
|
||||
|
||||
*num = 0;
|
||||
br_pem_decoder_init(&pc);
|
||||
|
|
@ -179,6 +180,7 @@ decode_pem(const void *src, size_t len, size_t *num)
|
|||
po.name = NULL;
|
||||
po.data = NULL;
|
||||
po.data_len = 0;
|
||||
extra_nl = 1;
|
||||
while (len > 0) {
|
||||
size_t tlen;
|
||||
|
||||
|
|
@ -214,6 +216,19 @@ decode_pem(const void *src, size_t len, size_t *num)
|
|||
VEC_CLEAREXT(pem_list, &free_pem_object_contents);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* We add an extra newline at the end, in order to
|
||||
* support PEM files that lack the newline on their last
|
||||
* line (this is somwehat invalid, but PEM format is not
|
||||
* standardised and such files do exist in the wild, so
|
||||
* we'd better accept them).
|
||||
*/
|
||||
if (len == 0 && extra_nl) {
|
||||
extra_nl = 0;
|
||||
buf = (const unsigned char *)"\n";
|
||||
len = 1;
|
||||
}
|
||||
}
|
||||
if (inobj) {
|
||||
fprintf(stderr, "ERROR: unfinished PEM object\n");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue