memset(from, 0, sizeof(*from));
}
+void
+INTEGER_copy(INTEGER_t *to, INTEGER_t *from)
+{
+ to->size = from->size;
+ to->buf = pmalloc(to->size);
+ memcpy(to->buf, from->buf, to->size);
+}
+
+static int
+just_print(const void *buffer, size_t size, void *pfx)
+{
+ pr_trc("%s: %.*s", (char const *)pfx, (int)size, buffer);
+ return 0;
+}
+
+void
+INTEGER_trc(char const *pfx, INTEGER_t *st)
+{
+ if (st != NULL)
+ INTEGER_print(&asn_DEF_INTEGER, st, 2, just_print, (void *)pfx);
+ else
+ pr_trc("%s: NULL", pfx);
+}
+
void
INTEGER_cleanup(INTEGER_t *st)
{
int INTEGER_cmp(INTEGER_t const *, INTEGER_t const *);
void INTEGER_move(INTEGER_t *, INTEGER_t *);
+void INTEGER_copy(INTEGER_t *, INTEGER_t *);
+void INTEGER_trc(char const *, INTEGER_t *);
void INTEGER_cleanup(INTEGER_t *);
#endif /* _INTEGER_H_ */
char const *dst;
array_index i;
+ INTEGER_cleanup(&fb->mft.num);
INTEGER_move(&fb->mft.num, &commit->mft.num);
fb->mft.update = commit->mft.update;
struct rrdp_hash *hash;
diff_bn = BN_create();
- if (!BN_sub(diff_bn, new->session.serial.num, old->session.serial.num))
+ if (!BN_sub(diff_bn, new->session.serial.num, old->session.serial.num)) {
+ BN_free(diff_bn);
return pr_crypto_err("OUCH! libcrypto cannot subtract %s - %s",
new->session.serial.str, old->session.serial.str);
+ }
if (BN_is_negative(diff_bn))
/* The validation was the BN_cmp() in the caller. */
pr_panic("%s - %s < 0 despite validations.",
/* Should be <= because it was already compared to the delta threshold. */
pr_panic("%lu > %zu despite validations.",
diff, new->deltas.len);
+ BN_free(diff_bn);
BN_free(old->session.serial.num);
free(old->session.serial.str);