scd: Fix receive buffer size.
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 22 Nov 2016 11:53:57 +0000 (20:53 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Wed, 30 Nov 2016 00:33:10 +0000 (09:33 +0900)
* scd/apdu.c (send_le): Fix the size, adding two for status
bytes to Le.

--
Backport of master commit: 5c2db9dedfe9dbb14ffec24751ca23a69cead94e

This is long standing bug.  So far, Le was not exact value.
Since forthcoming change will introduce exact value of expected length
of response data, this change is needed.

Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
scd/apdu.c

index 0beee25..97bce79 100644 (file)
@@ -3648,8 +3648,9 @@ send_le (int slot, int class, int ins, int p0, int p1,
 
   if (use_extended_length && (le > 256 || le < 0))
     {
-      result_buffer_size = le < 0? 4096 : le;
-      result_buffer = xtrymalloc (result_buffer_size + 10);
+      /* Two more bytes are needed for status bytes.  */
+      result_buffer_size = le < 0? 4096 : (le + 2);
+      result_buffer = xtrymalloc (result_buffer_size);
       if (!result_buffer)
         {
           xfree (apdu_buffer);