json: Add additional commands to help
[gpgme.git] / src / data-identify.c
index 88a472f..857d06c 100644 (file)
@@ -14,7 +14,7 @@
    Lesser General Public License for more details.
 
    You should have received a copy of the GNU Lesser General Public
-   License along with this program; if not, see <http://www.gnu.org/licenses/>.
+   License along with this program; if not, see <https://www.gnu.org/licenses/>.
  */
 
 #if HAVE_CONFIG_H
@@ -95,6 +95,11 @@ next_openpgp_packet (unsigned char const **bufptr, size_t *buflen,
   if (!len)
     return gpg_error (GPG_ERR_NO_DATA);
 
+  /* First some blacklisting.  */
+  if (len >= 4 && !memcmp (buf, "\x89PNG", 4))
+    return gpg_error (GPG_ERR_INV_PACKET); /* This is a PNG file.  */
+
+  /* Start parsing.  */
   ctb = *buf++; len--;
   if ( !(ctb & 0x80) )
     return gpg_error (GPG_ERR_INV_PACKET); /* Invalid CTB. */
@@ -273,7 +278,7 @@ pgp_binary_detection (const void *image_arg, size_t imagelen)
 
 /* This is probably an armored "PGP MESSAGE" which can encode
  * different PGP data types.  STRING is modified after a call to this
- * fucntion. */
+ * function. */
 static gpgme_data_type_t
 inspect_pgp_message (char *string)
 {
@@ -484,6 +489,8 @@ gpgme_data_identify (gpgme_data_t dh, int reserved)
   int n;
   gpgme_off_t off;
 
+  (void)reserved;
+
   /* Check whether we can seek the data object.  */
   off = gpgme_data_seek (dh, 0, SEEK_CUR);
   if (off == (gpgme_off_t)(-1))