Add safety check against bad card certificate.
authorDamien Goutte-Gattat <dgouttegattat@incenp.org>
Tue, 6 Jun 2017 10:39:08 +0000 (12:39 +0200)
committerDamien Goutte-Gattat <dgouttegattat@incenp.org>
Wed, 5 Jul 2017 19:43:42 +0000 (21:43 +0200)
* src/agent.c (scute_agent_get_cert): Reject card certificate if
it does not start with an ASN.1 sequence tag.

Signed-off-by: Damien Goutte-Gattat <dgouttegattat@incenp.org>
src/agent.c

index cecf570..cfc9a56 100644 (file)
@@ -1043,7 +1043,7 @@ scute_agent_get_cert (int no, struct cert *cert)
   err = assuan_transact (agent_ctx, cmd, get_cert_data_cb, &cert_s,
                         NULL, NULL, NULL, NULL);
   /* Just to be safe... */
-  if (!err && cert_s.cert_der_len <= 16)
+  if (!err && (cert_s.cert_der_len <= 16 || cert_s.cert_der[0] != 0x30))
     {
       DEBUG (DBG_INFO, "bad card certificate rejected");
       err = gpg_error (GPG_ERR_BAD_CERT);