gpg: Change a bug() call to a regular error message.
authorWerner Koch <wk@gnupg.org>
Wed, 26 Nov 2014 09:21:01 +0000 (10:21 +0100)
committerWerner Koch <wk@gnupg.org>
Wed, 26 Nov 2014 09:21:01 +0000 (10:21 +0100)
* g10/decrypt-data.c (decrypt_data): Return an error code instead of
calling BUG().
--

This code path can be triggered by fuzzing gpg and thus with some
likeness also by corrupt messages for other reasons.

g10/decrypt-data.c

index 9c6ae73..03d38c9 100644 (file)
@@ -130,7 +130,12 @@ decrypt_data (ctrl_t ctrl, void *procctx, PKT_encrypted *ed, DEK *dek)
     log_fatal ("unsupported blocksize %u\n", blocksize );
   nprefix = blocksize;
   if ( ed->len && ed->len < (nprefix+2) )
-    BUG();
+    {
+       /* An invalid message.  We can't check that during parsing
+          because we may not know the used cipher then.  */
+      rc = gpg_error (GPG_ERR_INV_PACKET);
+      goto leave;
+    }
 
   if ( ed->mdc_method )
     {