Created SILC Runtime Toolkit git repository Part II.
[runtime.git] / lib / silcutil / silcbase64.c
index c5c4242e8a1c3d65532541973479054f7f089963..17d199d45ebc5c5ef9ec5377af419116f03ac267 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 2007 Pekka Riikonen
+  Copyright (C) 2007 - 2008 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
 
 */
 
-#include "silc.h"
+#include "silcruntime.h"
 
 static unsigned char pem_enc[64] =
 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
@@ -36,6 +36,8 @@ char *silc_base64_encode(SilcStack stack, unsigned char *data, SilcUInt32 len)
   j = 0;
 
   pem = silc_scalloc(stack, ((len * 8 + 5) / 6) + 5, sizeof(*pem));
+  if (!pem)
+    return NULL;
 
   for (i = 0; i < len; i++) {
     c = data[i];
@@ -127,6 +129,8 @@ unsigned char *silc_base64_decode(SilcStack stack,
     len = base64_len;
 
   data = silc_scalloc(stack, ((len * 6) / 8), sizeof(*data));
+  if (!data)
+    return NULL;
 
   for (i = 0; i < len; i++) {
     c = base64[i];
@@ -151,9 +155,10 @@ unsigned char *silc_base64_decode(SilcStack stack,
     }
   }
 
-  switch(char_count) {
+  switch (char_count) {
   case 1:
     silc_sfree(stack, data);
+    silc_set_errno(SILC_ERR_BAD_ENCODING);
     return NULL;
     break;
   case 2: