]> diplodocus.org Git - nmh/blobdiff - sbr/base64.c
Just show relevant portion of invalid encoded string.
[nmh] / sbr / base64.c
index 79d7aa944a81d8e4c469c2756be957650431b74d..6a30e2f0ca7e2ff5ec7c2e0cb48575657e9121e7 100644 (file)
@@ -259,7 +259,7 @@ decodeBase64 (const char *encoded, unsigned char **decoded, size_t *len,
                 }
                 if (skip  ||  (((unsigned char) *cp) & 0x80)  ||
                     (value = b642nib[((unsigned char) *cp) & 0x7f]) > 0x3f) {
-                    advise (NULL, "invalid BASE64 encoding in %s", encoded);
+                    advise (NULL, "invalid BASE64 encoding in %s", cp);
                     charstring_free (decoded_c);
                     *decoded = NULL;
 
@@ -307,7 +307,12 @@ test_end:
     }
 
     if (! self_delimiting  &&  bitno != 18) {
-        advise (NULL, "premature ending (bitno %d) in %s", bitno, encoded);
+        int i;
+
+        /* Show some context for the error. */
+        for (i = 0; i < 20  &&  cp > encoded; ++i, --cp) {}
+        advise (NULL, "premature ending (bitno %d) near %s", bitno,
+                cp ? cp : encoded);
         charstring_free (decoded_c);
         *decoded = NULL;