(main) <gpgconf_list>: Fixed output for pcsc_driver.
authorWerner Koch <wk@gnupg.org>
Tue, 23 Mar 2004 12:33:20 +0000 (12:33 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 23 Mar 2004 12:33:20 +0000 (12:33 +0000)
scd/ChangeLog
scd/scdaemon.c
scd/tlv.c

index 9b2ddf7..895aae9 100644 (file)
@@ -1,5 +1,12 @@
+2004-03-23  Werner Koch  <wk@gnupg.org>
+
+       * scdaemon.c (main) <gpgconf_list>: Fixed output for pcsc_driver.
+
 2004-03-17  Werner Koch  <wk@gnupg.org>
 
+       * tlv.c (parse_ber_header): Do not check for tag overflow - it
+       does not make sense.  Simplified the check for length overflow.
+
        * scdaemon.c (main) <gpgconf>: Fixed default value quoting.
 
 2004-03-16  Werner Koch  <wk@gnupg.org>
index 9f1e409..955724b 100644 (file)
@@ -545,7 +545,7 @@ main (int argc, char **argv )
 
       printf ("reader-port:%lu:\n", GC_OPT_FLAG_NONE );
       printf ("ctapi-driver:%lu:\n", GC_OPT_FLAG_NONE );
-      printf ("pcsc-driver:%lu:\"%s\":\n",
+      printf ("pcsc-driver:%lu:\"%s:\n",
               GC_OPT_FLAG_DEFAULT, DEFAULT_PCSC_DRIVER );
 #ifdef HAVE_LIBUSB
       printf ("disable-ccid:%lu:\n", GC_OPT_FLAG_NONE );
index dbcd245..5b9d0d6 100644 (file)
--- a/scd/tlv.c
+++ b/scd/tlv.c
@@ -157,12 +157,6 @@ parse_ber_header (unsigned char const **buffer, size_t *size,
       tag = 0;
       do
         {
-          /* Simple check against overflow.  We limit our maximim tag
-             value more than needed but that should not be a problem
-             because I have nver encountered such large value.  We
-             assume at least 32 bit integers. */
-          if (tag > (1 << 24))
-            return gpg_error (GPG_ERR_TOO_LARGE);
           tag <<= 7;
           if (!length)
             return gpg_error (GPG_ERR_EOF);
@@ -190,16 +184,11 @@ parse_ber_header (unsigned char const **buffer, size_t *size,
       unsigned long len = 0;
       int count = c & 0x7f;
 
+      if (count > sizeof (len) || count > sizeof (size_t))
+        return gpg_error (GPG_ERR_BAD_BER);
+
       for (; count; count--)
         {
-          /* Simple check against overflow.  We limit our maximim
-             length more than needed but that should not be a problem
-             because I have never encountered such large value and
-             well they are managed in memory and thus we would run
-             into memory problems anyway.  We assume at least 32 bit
-             integers. */
-          if (len > (1 << 24))
-            return gpg_error (GPG_ERR_TOO_LARGE);
           len <<= 8;
           if (!length)
             return gpg_error (GPG_ERR_EOF);