Change RP and RPM demos to send an Abort if the APDU length is longer than max-APDU-length-accepted. Thank you, Carlos!

This commit is contained in:
skarg
2010-01-08 22:37:24 +00:00
parent 07a0a88606
commit 9aa653c83e
2 changed files with 25 additions and 2 deletions
+14 -2
View File
@@ -154,10 +154,22 @@ void handler_read_property(
len =
rp_ack_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id, &data);
if (len > service_data->max_resp) {
/* we don't support segmentation - send an abort */
len =
abort_encode_apdu(&Handler_Transmit_Buffer[pdu_len],
service_data->invoke_id, ABORT_REASON_SEGMENTATION_NOT_SUPPORTED,
true);
#if PRINT_ENABLED
fprintf(stderr, "RP: Sending Ack!\n");
fprintf(stderr, "RP: Message too large. Sending Abort!\n");
#endif
error = false;
goto RP_ABORT;
} else {
#if PRINT_ENABLED
fprintf(stderr, "RP: Sending Ack!\n");
#endif
error = false;
}
}
if (error) {
if (len == -2) {
+11
View File
@@ -423,6 +423,17 @@ void handler_read_property_multiple(
break;
}
} while (1);
if (pdu_len > service_data->max_resp) {
/* we don't support segmentation - send an abort */
apdu_len =
abort_encode_apdu(&Handler_Transmit_Buffer[npdu_len],
service_data->invoke_id, ABORT_REASON_SEGMENTATION_NOT_SUPPORTED,
true);
#if PRINT_ENABLED
fprintf(stderr, "RP: Message too large. Sending Abort!\n");
#endif
goto RPM_ABORT;
}
RPM_ABORT:
pdu_len = apdu_len + npdu_len;
bytes_sent =