if (prefix - (offset - *len) >= 255) {
goto error;
}
- object->optional_text_len = prefix - (offset - *len);
+ object->optional_text_len = (uint8_t)(prefix - (offset - *len));
if (object->optional_text_len > 0) {
if (*len < object->optional_text_len) {
/* Not enough data. */
if (prefix - (offset - *len) >= 255) {
goto error;
}
- object->file_data_len = prefix - (offset - *len);
+ object->file_data_len = (uint8_t)(prefix - (offset - *len));
if (object->file_data_len > 0) {
if (*len < object->file_data_len) {
/* Not enough data. */
if (prefix - (offset - *len) >= 255) {
goto error;
}
- object->optional_text_len = prefix - (offset - *len);
+ object->optional_text_len = (uint8_t)(prefix - (offset - *len));
if (object->optional_text_len > 0) {
if (*len < object->optional_text_len) {
/* Not enough data. */
if (prefix - (offset - *len) >= 65535) {
goto error;
}
- object->file_specification_len = prefix - (offset - *len);
+ object->file_specification_len = (uint16_t)(prefix - (offset - *len));
if (object->file_specification_len > 0) {
if (*len < object->file_specification_len) {
/* Not enough data. */
if (!DNP3ReadUint8(buf, len, &object->reason)) {
goto error;
}
- object->challenge_data_len = prefix - (offset - *len);
+ if (prefix < (offset - *len)) {
+ goto error;
+ }
+ object->challenge_data_len = (uint16_t)(prefix - (offset - *len));
if (object->challenge_data_len > 0) {
if (*len < object->challenge_data_len) {
/* Not enough data. */
if (!DNP3ReadUint16(buf, len, &object->usr)) {
goto error;
}
- object->mac_value_len = prefix - (offset - *len);
+ if (prefix < (offset - *len)) {
+ goto error;
+ }
+ object->mac_value_len = (uint16_t)(prefix - (offset - *len));
if (object->mac_value_len > 0) {
if (*len < object->mac_value_len) {
/* Not enough data. */
*buf += object->challenge_data_len;
*len -= object->challenge_data_len;
}
- object->mac_value_len = prefix - (offset - *len);
+ if (prefix < (offset - *len)) {
+ goto error;
+ }
+ object->mac_value_len = (uint16_t)(prefix - (offset - *len));
if (object->mac_value_len > 0) {
if (*len < object->mac_value_len) {
/* Not enough data. */
if (!DNP3ReadUint16(buf, len, &object->usr)) {
goto error;
}
- object->wrapped_key_data_len = prefix - (offset - *len);
+ if (prefix < (offset - *len)) {
+ goto error;
+ }
+ object->wrapped_key_data_len = (uint16_t)(prefix - (offset - *len));
if (object->wrapped_key_data_len > 0) {
if (*len < object->wrapped_key_data_len) {
/* Not enough data. */
if (prefix - (offset - *len) >= 65535) {
goto error;
}
- object->error_text_len = prefix - (offset - *len);
+ object->error_text_len = (uint16_t)(prefix - (offset - *len));
if (object->error_text_len > 0) {
if (*len < object->error_text_len) {
/* Not enough data. */
if (!DNP3ReadUint8(buf, len, &object->certificate_type)) {
goto error;
}
- object->certificate_len = prefix - (offset - *len);
+ if (prefix < (offset - *len)) {
+ goto error;
+ }
+ object->certificate_len = (uint16_t)(prefix - (offset - *len));
if (object->certificate_len > 0) {
if (*len < object->certificate_len) {
/* Not enough data. */
offset = *len;
- object->mac_value_len = prefix - (offset - *len);
+ if (prefix < (offset - *len)) {
+ goto error;
+ }
+ object->mac_value_len = (uint16_t)(prefix - (offset - *len));
if (object->mac_value_len > 0) {
if (*len < object->mac_value_len) {
/* Not enough data. */
offset = *len;
- object->digital_signature_len = prefix - (offset - *len);
+ if (prefix < (offset - *len)) {
+ goto error;
+ }
+ object->digital_signature_len = (uint16_t)(prefix - (offset - *len));
if (object->digital_signature_len > 0) {
if (*len < object->digital_signature_len) {
/* Not enough data. */
offset = *len;
- object->mac_len = prefix - (offset - *len);
+ if (prefix < (offset - *len)) {
+ goto error;
+ }
+ object->mac_len = (uint16_t)(prefix - (offset - *len));
if (object->mac_len > 0) {
if (*len < object->mac_len) {
/* Not enough data. */
json_integer(data->length));
unsigned long data_objects_b64_len = BASE64_BUFFER_SIZE(data->length);
uint8_t data_objects_b64[data_objects_b64_len];
- Base64Encode(data->data_objects, data->length,
- data_objects_b64, &data_objects_b64_len);
- json_object_set_new(js, "data->data_objects",
- json_string((char *)data_objects_b64));
+ if (Base64Encode(data->data_objects, data->length,
+ data_objects_b64, &data_objects_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->data_objects",
+ json_string((char *)data_objects_b64));
break;
}
case DNP3_OBJECT_CODE(86, 2): {
json_integer(data->reason));
unsigned long challenge_data_b64_len = BASE64_BUFFER_SIZE(data->challenge_data_len);
uint8_t challenge_data_b64[challenge_data_b64_len];
- Base64Encode(data->challenge_data, data->challenge_data_len,
- challenge_data_b64, &challenge_data_b64_len);
- json_object_set_new(js, "data->challenge_data",
- json_string((char *)challenge_data_b64));
+ if (Base64Encode(data->challenge_data, data->challenge_data_len,
+ challenge_data_b64, &challenge_data_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->challenge_data",
+ json_string((char *)challenge_data_b64));
break;
}
case DNP3_OBJECT_CODE(120, 2): {
json_integer(data->usr));
unsigned long mac_value_b64_len = BASE64_BUFFER_SIZE(data->mac_value_len);
uint8_t mac_value_b64[mac_value_b64_len];
- Base64Encode(data->mac_value, data->mac_value_len,
- mac_value_b64, &mac_value_b64_len);
- json_object_set_new(js, "data->mac_value",
- json_string((char *)mac_value_b64));
+ if (Base64Encode(data->mac_value, data->mac_value_len,
+ mac_value_b64, &mac_value_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->mac_value",
+ json_string((char *)mac_value_b64));
break;
}
case DNP3_OBJECT_CODE(120, 3): {
json_integer(data->challenge_data_len));
unsigned long challenge_data_b64_len = BASE64_BUFFER_SIZE(data->challenge_data_len);
uint8_t challenge_data_b64[challenge_data_b64_len];
- Base64Encode(data->challenge_data, data->challenge_data_len,
- challenge_data_b64, &challenge_data_b64_len);
- json_object_set_new(js, "data->challenge_data",
- json_string((char *)challenge_data_b64));
+ if (Base64Encode(data->challenge_data, data->challenge_data_len,
+ challenge_data_b64, &challenge_data_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->challenge_data",
+ json_string((char *)challenge_data_b64));
unsigned long mac_value_b64_len = BASE64_BUFFER_SIZE(data->mac_value_len);
uint8_t mac_value_b64[mac_value_b64_len];
- Base64Encode(data->mac_value, data->mac_value_len,
- mac_value_b64, &mac_value_b64_len);
- json_object_set_new(js, "data->mac_value",
- json_string((char *)mac_value_b64));
+ if (Base64Encode(data->mac_value, data->mac_value_len,
+ mac_value_b64, &mac_value_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->mac_value",
+ json_string((char *)mac_value_b64));
break;
}
case DNP3_OBJECT_CODE(120, 6): {
json_integer(data->usr));
unsigned long wrapped_key_data_b64_len = BASE64_BUFFER_SIZE(data->wrapped_key_data_len);
uint8_t wrapped_key_data_b64[wrapped_key_data_b64_len];
- Base64Encode(data->wrapped_key_data, data->wrapped_key_data_len,
- wrapped_key_data_b64, &wrapped_key_data_b64_len);
- json_object_set_new(js, "data->wrapped_key_data",
- json_string((char *)wrapped_key_data_b64));
+ if (Base64Encode(data->wrapped_key_data, data->wrapped_key_data_len,
+ wrapped_key_data_b64, &wrapped_key_data_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->wrapped_key_data",
+ json_string((char *)wrapped_key_data_b64));
break;
}
case DNP3_OBJECT_CODE(120, 7): {
json_integer(data->certificate_type));
unsigned long certificate_b64_len = BASE64_BUFFER_SIZE(data->certificate_len);
uint8_t certificate_b64[certificate_b64_len];
- Base64Encode(data->certificate, data->certificate_len,
- certificate_b64, &certificate_b64_len);
- json_object_set_new(js, "data->certificate",
- json_string((char *)certificate_b64));
+ if (Base64Encode(data->certificate, data->certificate_len,
+ certificate_b64, &certificate_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->certificate",
+ json_string((char *)certificate_b64));
break;
}
case DNP3_OBJECT_CODE(120, 9): {
DNP3ObjectG120V9 *data = point->data;
unsigned long mac_value_b64_len = BASE64_BUFFER_SIZE(data->mac_value_len);
uint8_t mac_value_b64[mac_value_b64_len];
- Base64Encode(data->mac_value, data->mac_value_len,
- mac_value_b64, &mac_value_b64_len);
- json_object_set_new(js, "data->mac_value",
- json_string((char *)mac_value_b64));
+ if (Base64Encode(data->mac_value, data->mac_value_len,
+ mac_value_b64, &mac_value_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->mac_value",
+ json_string((char *)mac_value_b64));
break;
}
case DNP3_OBJECT_CODE(120, 10): {
}
unsigned long user_public_key_b64_len = BASE64_BUFFER_SIZE(data->user_public_key_len);
uint8_t user_public_key_b64[user_public_key_b64_len];
- Base64Encode(data->user_public_key, data->user_public_key_len,
- user_public_key_b64, &user_public_key_b64_len);
- json_object_set_new(js, "data->user_public_key",
- json_string((char *)user_public_key_b64));
+ if (Base64Encode(data->user_public_key, data->user_public_key_len,
+ user_public_key_b64, &user_public_key_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->user_public_key",
+ json_string((char *)user_public_key_b64));
unsigned long certification_data_b64_len = BASE64_BUFFER_SIZE(data->certification_data_len);
uint8_t certification_data_b64[certification_data_b64_len];
- Base64Encode(data->certification_data, data->certification_data_len,
- certification_data_b64, &certification_data_b64_len);
- json_object_set_new(js, "data->certification_data",
- json_string((char *)certification_data_b64));
+ if (Base64Encode(data->certification_data, data->certification_data_len,
+ certification_data_b64, &certification_data_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->certification_data",
+ json_string((char *)certification_data_b64));
break;
}
case DNP3_OBJECT_CODE(120, 11): {
}
unsigned long master_challenge_data_b64_len = BASE64_BUFFER_SIZE(data->master_challenge_data_len);
uint8_t master_challenge_data_b64[master_challenge_data_b64_len];
- Base64Encode(data->master_challenge_data, data->master_challenge_data_len,
- master_challenge_data_b64, &master_challenge_data_b64_len);
- json_object_set_new(js, "data->master_challenge_data",
- json_string((char *)master_challenge_data_b64));
+ if (Base64Encode(data->master_challenge_data, data->master_challenge_data_len,
+ master_challenge_data_b64, &master_challenge_data_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->master_challenge_data",
+ json_string((char *)master_challenge_data_b64));
break;
}
case DNP3_OBJECT_CODE(120, 12): {
json_integer(data->challenge_data_len));
unsigned long challenge_data_b64_len = BASE64_BUFFER_SIZE(data->challenge_data_len);
uint8_t challenge_data_b64[challenge_data_b64_len];
- Base64Encode(data->challenge_data, data->challenge_data_len,
- challenge_data_b64, &challenge_data_b64_len);
- json_object_set_new(js, "data->challenge_data",
- json_string((char *)challenge_data_b64));
+ if (Base64Encode(data->challenge_data, data->challenge_data_len,
+ challenge_data_b64, &challenge_data_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->challenge_data",
+ json_string((char *)challenge_data_b64));
break;
}
case DNP3_OBJECT_CODE(120, 13): {
json_integer(data->encrypted_update_key_len));
unsigned long encrypted_update_key_data_b64_len = BASE64_BUFFER_SIZE(data->encrypted_update_key_len);
uint8_t encrypted_update_key_data_b64[encrypted_update_key_data_b64_len];
- Base64Encode(data->encrypted_update_key_data, data->encrypted_update_key_len,
- encrypted_update_key_data_b64, &encrypted_update_key_data_b64_len);
- json_object_set_new(js, "data->encrypted_update_key_data",
- json_string((char *)encrypted_update_key_data_b64));
+ if (Base64Encode(data->encrypted_update_key_data, data->encrypted_update_key_len,
+ encrypted_update_key_data_b64, &encrypted_update_key_data_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->encrypted_update_key_data",
+ json_string((char *)encrypted_update_key_data_b64));
break;
}
case DNP3_OBJECT_CODE(120, 14): {
DNP3ObjectG120V14 *data = point->data;
unsigned long digital_signature_b64_len = BASE64_BUFFER_SIZE(data->digital_signature_len);
uint8_t digital_signature_b64[digital_signature_b64_len];
- Base64Encode(data->digital_signature, data->digital_signature_len,
- digital_signature_b64, &digital_signature_b64_len);
- json_object_set_new(js, "data->digital_signature",
- json_string((char *)digital_signature_b64));
+ if (Base64Encode(data->digital_signature, data->digital_signature_len,
+ digital_signature_b64, &digital_signature_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->digital_signature",
+ json_string((char *)digital_signature_b64));
break;
}
case DNP3_OBJECT_CODE(120, 15): {
DNP3ObjectG120V15 *data = point->data;
unsigned long mac_b64_len = BASE64_BUFFER_SIZE(data->mac_len);
uint8_t mac_b64[mac_b64_len];
- Base64Encode(data->mac, data->mac_len,
- mac_b64, &mac_b64_len);
- json_object_set_new(js, "data->mac",
- json_string((char *)mac_b64));
+ if (Base64Encode(data->mac, data->mac_len,
+ mac_b64, &mac_b64_len) == SC_BASE64_OK)
+ json_object_set_new(js, "data->mac",
+ json_string((char *)mac_b64));
break;
}
case DNP3_OBJECT_CODE(121, 1): {