/* These are supposed to be unbounded */
struct rrdp_serial {
BIGNUM *num;
- xmlChar *str; /* for printing */
+ char *str; /* for printing */
};
struct rrdp_session {
- xmlChar *session_id;
+ char *session_id;
struct rrdp_serial serial;
};
{
BN_free(serial->num);
serial->num = NULL;
- xmlFree(serial->str);
+ free(serial->str);
serial->str = NULL;
}
static void
session_cleanup(struct rrdp_session *meta)
{
- xmlFree(meta->session_id);
+ free(meta->session_id);
BN_free(meta->serial.num);
- xmlFree(meta->serial.str);
+ free(meta->serial.str);
}
static void
str = xmlTextReaderGetAttribute(reader, BAD_CAST attr);
if (str == NULL)
- return pr_val_err("RRDP file: Couldn't find xml attribute '%s'",
- attr);
+ return pr_val_err("Couldn't find xml attribute '%s'", attr);
errno = 0;
*result = strtoul((char const *) str, NULL, 10);
error = errno;
xmlFree(str);
if (error) {
- pr_val_err("RRDP file: Invalid long value '%s': %s",
- str, strerror(error));
+ pr_val_err("Invalid long value '%s': %s", str, strerror(error));
return error;
}
static int
parse_serial(xmlTextReaderPtr reader, struct rrdp_serial *serial)
{
- serial->str = parse_string(reader, RRDP_ATTR_SERIAL);
- if (serial->str == NULL)
+ xmlChar *xmlserial;
+
+ xmlserial = parse_string(reader, RRDP_ATTR_SERIAL);
+ if (xmlserial == NULL)
return EINVAL;
+ serial->str = pstrdup((const char *) xmlserial);
+ xmlFree(xmlserial);
serial->num = BN_create();
- if (BN_dec2bn(&serial->num, (char const *) serial->str) == 0)
+ if (BN_dec2bn(&serial->num, serial->str) == 0)
goto fail;
if (BN_is_negative(serial->num)) {
pr_val_err("Serial '%s' is negative.", serial->str);
static int
parse_session(xmlTextReaderPtr reader, struct rrdp_session *meta)
{
+ xmlChar *xmlsession;
int error;
/*
if (error)
return error;
- meta->session_id = parse_string(reader, RRDP_ATTR_SESSION_ID);
- if (meta->session_id == NULL)
+ xmlsession = parse_string(reader, RRDP_ATTR_SESSION_ID);
+ if (xmlsession == NULL)
return EINVAL;
+ meta->session_id = pstrdup((const char *) xmlsession);
+ xmlFree(xmlsession);
error = parse_serial(reader, &meta->serial);
if (error) {
- xmlFree(meta->session_id);
+ free(meta->session_id);
meta->session_id = NULL;
return error;
}
if (error)
return error;
- if (xmlStrcmp(expected->session_id, actual.session_id) != 0) {
+ if (strcmp(expected->session_id, actual.session_id) != 0) {
error = pr_val_err("File session id [%s] doesn't match notification's session id [%s]",
expected->session_id, actual.session_id);
goto end;
goto revert_notification;
}
- if (xmlStrcmp(old.session_id, new.session.session_id) != 0) {
+ if (strcmp(old.session_id, new.session.session_id) != 0) {
pr_val_debug("The Notification's session ID changed.");
error = handle_snapshot(&new);
goto revert_notification;
static int
__sort_deltas(struct notification_deltas *deltas, unsigned int max_serial,
- char const *max_serial_str)
+ char *max_serial_str)
{
struct update_notification notif;
int error;
notif.session.serial.num = BN_create();
if (!BN_set_word(notif.session.serial.num, max_serial))
ck_abort_msg("BN_set_word() returned zero.");
- notif.session.serial.str = (unsigned char *) max_serial_str;
+ notif.session.serial.str = max_serial_str;
error = sort_deltas(¬if);
snapshot_uri.local = "resources/rrdp/snapshot-bad-publish.xml";
snapshot_uri.references = 1;
- notif.session.session_id = BAD_CAST "9df4b597-af9e-4dca-bdda-719cce2c4e28";
- notif.session.serial.str = BAD_CAST "2";
+ notif.session.session_id = "9df4b597-af9e-4dca-bdda-719cce2c4e28";
+ notif.session.serial.str = "2";
notif.session.serial.num = BN_two();
notif.snapshot.uri = &snapshot_uri;
notif.uri = ¬if_uri;