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>
Tue, 22 Nov 2016 11:53:57 +0000 (20:53 +0900)
* scd/apdu.c (send_le): Fix the size, adding two for status
bytes to Le.

--

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 54f3b30..b32fe80 100644 (file)
@@ -3757,8 +3757,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);