diff --git a/src/encode/base64.c b/src/encode/base64.c
index 9e5bb443cecd5c5bc59e667384064567e498d5a4..d1c37fe070988f24f4a339a220129dd50ddbaa90 100644
--- a/src/encode/base64.c
+++ b/src/encode/base64.c
@@ -52,6 +52,8 @@ int b64_decode(char *target, size_t tlen, const char *source, size_t slen)
 	int		working=0;
 	char *	i;
 
+	if(slen==0)
+		slen=strlen(source);
 	outp=target;
 	inp=source;
 	outend=target+tlen;
@@ -102,6 +104,8 @@ int b64_encode(char *target, size_t tlen, const char *source, size_t slen)  {
 	char	enc;
 	int		buf=0;
 	
+	if(slen==0)
+		slen=strlen(source);
 	inp=source;
 	if(source==target)  {
 		tmpbuf=(char *)malloc(tlen);