summaryrefslogtreecommitdiffstats
path: root/src/wgtpkg-certs.c
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2016-03-16 16:05:28 +0100
committerJosé Bollo <jose.bollo@iot.bzh>2016-03-16 17:31:58 +0100
commit2c6fcae14552ab6e7addc82516617a135f86b5ca (patch)
treee6c8aff7b0fca5ef81c02bfb7c2d71ec6fc97046 /src/wgtpkg-certs.c
parentabfae2b6d73d7be40ffbff8e8429f71d82df90b5 (diff)
cmake: improves error detection
Add detection of problem of cast. The problems are corrected in the patch. Change-Id: I8dc1e987531790860e390dea53ddf49d52339cb2 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/wgtpkg-certs.c')
-rw-r--r--src/wgtpkg-certs.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/wgtpkg-certs.c b/src/wgtpkg-certs.c
index 7310035..2201632 100644
--- a/src/wgtpkg-certs.c
+++ b/src/wgtpkg-certs.c
@@ -24,7 +24,7 @@
#include "wgtpkg-base64.h"
struct x509l {
- int count;
+ unsigned count;
X509 **certs;
};
@@ -32,7 +32,8 @@ static struct x509l certificates = { .count = 0, .certs = NULL };
static int add_certificate_x509(X509 *x)
{
- X509 **p = realloc(certificates.certs, (certificates.count + 1) * sizeof(X509*));
+ X509 **p = realloc(certificates.certs,
+ (certificates.count + 1) * sizeof(X509*));
if (!p) {
ERROR("reallocation failed for certificate");
return -1;
@@ -42,7 +43,7 @@ static int add_certificate_x509(X509 *x)
return 0;
}
-static int add_certificate_bin(const char *bin, int len)
+static int add_certificate_bin(const char *bin, size_t len)
{
int rc;
const char *b, *e;
@@ -66,12 +67,15 @@ static int add_certificate_bin(const char *bin, int len)
int add_certificate_b64(const char *b64)
{
char *d;
- int l = base64dec(b64, &d);
- if (l > 0) {
- l = add_certificate_bin(d, l);
+ ssize_t l = base64dec(b64, &d);
+ int rc;
+ if (l < 0)
+ rc = -1;
+ else {
+ rc = add_certificate_bin(d, (size_t)l);
free(d);
}
- return l;
+ return rc;
}
void clear_certificates()