Control: notfound 773470 2.1.1

On Thu 2014-12-18 13:32:24 -0500, Joshua Rogers wrote:
> Package: gnupg2
> Version: 2.1.1
>
> On line 1242 of app-nks.c, 'xtrymalloc' is called with 'datalen',
> which is calculated using "size_t datalen = oldpinlen + newpinlen"

The code you're talking about is here (in scd/app-nks.c):

  1237    if ((flags & APP_CHANGE_FLAG_RESET))
  1238      {
  1239        char *data;
  1240        size_t datalen = oldpinlen + newpinlen;
  1241  
  1242        data = xtrymalloc (datalen);
  1243        if (!data)
  1244          {
  1245            err = gpg_error_from_syserror ();
  1246            goto leave;
  1247          }
  1248        memcpy (data, oldpin, oldpinlen);
  1249        memcpy (data+oldpinlen, newpin, newpinlen);
  1250        err = iso7816_reset_retry_counter_with_rc (app->slot, pwid,
  1251                                                   data, datalen);
  1252        wipememory (data, datalen);
  1253        xfree (data);
  1254      }

> This does not account for the null-bytes, and may cause either a
> buffer overflow, or other problems down the line.

The only place where data is used is with memcpy() and
iso7816_reset_retry_counter_with_rc() and wipememory().

In these invocations, the data buffer is passed with an appropriate size
value -- it is not used as a null-terminated string.

I'm closing this report because it is not a bug.

    --dkg

Attachment: signature.asc
Description: PGP signature

Reply via email to