projects
/
BearSSL
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed RSA "i32" PKCS#1 v1.5 signature generation.
[BearSSL]
/
tools
/
files.c
diff --git
a/tools/files.c
b/tools/files.c
index
07af6c4
..
651d51a
100644
(file)
--- a/
tools/files.c
+++ b/
tools/files.c
@@
-172,6
+172,7
@@
decode_pem(const void *src, size_t len, size_t *num)
bvector bv = VEC_INIT;
int inobj;
bvector bv = VEC_INIT;
int inobj;
+ *num = 0;
br_pem_decoder_init(&pc);
buf = src;
inobj = 0;
br_pem_decoder_init(&pc);
buf = src;
inobj = 0;
@@
-267,6
+268,9
@@
read_certificates(const char *fname, size_t *num)
pos = decode_pem(buf, len, &num_pos);
xfree(buf);
pos = decode_pem(buf, len, &num_pos);
xfree(buf);
+ if (pos == NULL) {
+ return NULL;
+ }
for (u = 0; u < num_pos; u ++) {
if (eqstr(pos[u].name, "CERTIFICATE")
|| eqstr(pos[u].name, "X509 CERTIFICATE"))
for (u = 0; u < num_pos; u ++) {
if (eqstr(pos[u].name, "CERTIFICATE")
|| eqstr(pos[u].name, "X509 CERTIFICATE"))
@@
-296,3
+300,15
@@
read_certificates(const char *fname, size_t *num)
VEC_CLEAR(cert_list);
return xcs;
}
VEC_CLEAR(cert_list);
return xcs;
}
+
+/* see brssl.h */
+void
+free_certificates(br_x509_certificate *certs, size_t num)
+{
+ size_t u;
+
+ for (u = 0; u < num; u ++) {
+ xfree(certs[u].data);
+ }
+ xfree(certs);
+}