<div dir="ltr"><div>I made a PR to fix this: <a href="https://dev.gnupg.org/D547">https://dev.gnupg.org/D547</a>.</div><div><br>Best,</div><div>Anze</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 30, 2021 at 3:52 PM Werner Koch <<a href="mailto:wk@gnupg.org" target="_blank">wk@gnupg.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> I have attached logs of the wrong and correct behavior I observed<br>
> (debug-level guru, debug-all).<br>
<br>
Yes, this is an obvious bug.  We have not yet seen it because on Unix we<br>
prefer to use the CCID driver using a different code path and further<br>
with 2.3 there is not much need to specify a port.<br>
<br>
Here is the bug:<br>
<br>
      while (dl->idx < dl->idx_max)<br>
        {<br>
          const char *rdrname = pcsc.rdrname[dl->idx];<br>
<br>
          if (DBG_READER)<br>
            log_debug ("apdu_open_reader: %s\n", rdrname);<br>
<br>
          /* Check the identity of reader against already opened one.  */<br>
          for (slot = 0; slot < MAX_READER; slot++)<br>
            if (reader_table[slot].used<br>
                && !strcmp (reader_table[slot].rdrname, rdrname))<br>
              break;<br>
<br>
          if (slot == MAX_READER)<br>
            { /* Found a new device.  */<br>
              if (DBG_READER)<br>
                log_debug ("apdu_open_reader: new device=%s\n", rdrname);<br>
<br>
              /* When reader string is specified, check if it is the one.  */<br>
              if (readerno < 0<br>
                  && strncmp (rdrname, dl->portstr, strlen (dl->portstr)) != 0)<br>
                continue;<br>
<br>
The /continue/ causes the loop because the loop index is not bumped.<br>
<br>
<br>
Salam-Shalom,<br>
<br>
   Werner<br>
<br>
-- <br>
Die Gedanken sind frei.  Ausnahmen regelt ein Bundesgesetz.<br>
</blockquote></div>