changeset 6716:2c14f8d1d5eb

2006-03-24 Simon Josefsson <jas@extundo.com> * base64.c: Fix problems reported by Eric Blake <ebb9@byu.net>, including some doc fixes. (base64_encode_alloc): Fix +1 bug on allocation failures.
author Simon Josefsson <simon@josefsson.org>
date Fri, 24 Mar 2006 14:08:19 +0000
parents f8c57b2df51a
children 72afe7281123
files lib/ChangeLog lib/base64.c
diffstat 2 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,9 @@
+2006-03-24  Simon Josefsson  <jas@extundo.com>
+
+	* base64.c: Fix problems reported by Eric Blake <ebb9@byu.net>,
+	including some doc fixes.
+	(base64_encode_alloc): Fix +1 bug on allocation failures.
+
 2006-03-24  Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
 
 	* base64.c (base64_encode): Do not read past end of array with
--- a/lib/base64.c
+++ b/lib/base64.c
@@ -109,8 +109,8 @@
    return, the OUT variable will hold a pointer to newly allocated
    memory that must be deallocated by the caller.  If output string
    length would overflow, 0 is returned and OUT is set to NULL.  If
-   memory allocation fail, OUT is set to NULL, and the return value
-   indicate length of the requested memory block, i.e.,
+   memory allocation failed, OUT is set to NULL, and the return value
+   indicates length of the requested memory block, i.e.,
    BASE64_LENGTH(inlen) + 1. */
 size_t
 base64_encode_alloc (const char *in, size_t inlen, char **out)
@@ -136,8 +136,10 @@
     }
 
   *out = malloc (outlen);
-  if (*out)
-    base64_encode (in, inlen, *out, outlen);
+  if (!*out)
+    return outlen;
+
+  base64_encode (in, inlen, *out, outlen);
 
   return outlen - 1;
 }
@@ -288,6 +290,8 @@
 # define uchar_in_range(c) ((c) <= 255)
 #endif
 
+/* Return true if CH is a character from the Base64 alphabet, and
+   false otherwise. */
 bool
 isbase64 (char ch)
 {
@@ -382,11 +386,11 @@
    size of the decoded data is stored in *OUTLEN.  OUTLEN may be NULL,
    if the caller is not interested in the decoded length.  *OUT may be
    NULL to indicate an out of memory error, in which case *OUTLEN
-   contain the size of the memory block needed.  The function return
+   contains the size of the memory block needed.  The function returns
    true on successful decoding and memory allocation errors.  (Use the
    *OUT and *OUTLEN parameters to differentiate between successful
-   decoding and memory error.)  The function return false if the input
-   was invalid, in which case *OUT is NULL and *OUTLEN is
+   decoding and memory error.)  The function returns false if the
+   input was invalid, in which case *OUT is NULL and *OUTLEN is
    undefined. */
 bool
 base64_decode_alloc (const char *in, size_t inlen, char **out,