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;
|
const unsigned char *buf;
|
||||||
bvector bv = VEC_INIT;
|
bvector bv = VEC_INIT;
|
||||||
int inobj;
|
int inobj;
|
||||||
|
int extra_nl;
|
||||||
|
|
||||||
*num = 0;
|
*num = 0;
|
||||||
br_pem_decoder_init(&pc);
|
br_pem_decoder_init(&pc);
|
||||||
|
|
@ -179,6 +180,7 @@ decode_pem(const void *src, size_t len, size_t *num)
|
||||||
po.name = NULL;
|
po.name = NULL;
|
||||||
po.data = NULL;
|
po.data = NULL;
|
||||||
po.data_len = 0;
|
po.data_len = 0;
|
||||||
|
extra_nl = 1;
|
||||||
while (len > 0) {
|
while (len > 0) {
|
||||||
size_t tlen;
|
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);
|
VEC_CLEAREXT(pem_list, &free_pem_object_contents);
|
||||||
return NULL;
|
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) {
|
if (inobj) {
|
||||||
fprintf(stderr, "ERROR: unfinished PEM object\n");
|
fprintf(stderr, "ERROR: unfinished PEM object\n");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue