|  | @@ -964,7 +964,6 @@ START_TEST(test_encode_decode)
 | 
	
		
			
				|  |  |  	int ret;
 | 
	
		
			
				|  |  |  	size_t len;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -#if defined(USE_WEBSOCKET) || defined(USE_LUA)
 | 
	
		
			
				|  |  |  	const char *alpha_b64_enc = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=";
 | 
	
		
			
				|  |  |  	const char *nonalpha_b64_enc =
 | 
	
		
			
				|  |  |  	    "ICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9A";
 | 
	
	
		
			
				|  | @@ -972,43 +971,57 @@ START_TEST(test_encode_decode)
 | 
	
		
			
				|  |  |  	mark_point();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  | -	base64_encode((unsigned char *)"a", 1, buf);
 | 
	
		
			
				|  |  | +	base64_encode((unsigned char *)"a", 1, buf, NULL);
 | 
	
		
			
				|  |  |  	ck_assert_str_eq(buf, "YQ==");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  | -	base64_encode((unsigned char *)"ab", 1, buf);
 | 
	
		
			
				|  |  | +	len = 9999;
 | 
	
		
			
				|  |  | +	base64_encode((unsigned char *)"ab", 1, buf, &len);
 | 
	
		
			
				|  |  |  	ck_assert_str_eq(buf, "YQ==");
 | 
	
		
			
				|  |  | +	ck_assert_int_eq((int)len, 5);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  | -	base64_encode((unsigned char *)"ab", 2, buf);
 | 
	
		
			
				|  |  | +	len = 9999;
 | 
	
		
			
				|  |  | +	base64_encode((unsigned char *)"ab", 2, buf, &len);
 | 
	
		
			
				|  |  |  	ck_assert_str_eq(buf, "YWI=");
 | 
	
		
			
				|  |  | +	ck_assert_int_eq((int)len, 5);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  | -	base64_encode((unsigned char *)alpha, 3, buf);
 | 
	
		
			
				|  |  | +	len = 9999;
 | 
	
		
			
				|  |  | +	base64_encode((unsigned char *)alpha, 3, buf, &len);
 | 
	
		
			
				|  |  |  	ck_assert_str_eq(buf, "YWJj");
 | 
	
		
			
				|  |  | +	ck_assert_int_eq((int)len, 5);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  | -	base64_encode((unsigned char *)alpha, 4, buf);
 | 
	
		
			
				|  |  | +	len = 9999;
 | 
	
		
			
				|  |  | +	base64_encode((unsigned char *)alpha, 4, buf, &len);
 | 
	
		
			
				|  |  |  	ck_assert_str_eq(buf, "YWJjZA==");
 | 
	
		
			
				|  |  | +	ck_assert_int_eq((int)len, 9);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  | -	base64_encode((unsigned char *)alpha, 5, buf);
 | 
	
		
			
				|  |  | +	len = 9999;
 | 
	
		
			
				|  |  | +	base64_encode((unsigned char *)alpha, 5, buf, &len);
 | 
	
		
			
				|  |  |  	ck_assert_str_eq(buf, "YWJjZGU=");
 | 
	
		
			
				|  |  | +	ck_assert_int_eq((int)len, 9);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  | -	base64_encode((unsigned char *)alpha, 6, buf);
 | 
	
		
			
				|  |  | +	len = 9999;
 | 
	
		
			
				|  |  | +	base64_encode((unsigned char *)alpha, 6, buf, &len);
 | 
	
		
			
				|  |  |  	ck_assert_str_eq(buf, "YWJjZGVm");
 | 
	
		
			
				|  |  | +	ck_assert_int_eq((int)len, 9);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  | -	base64_encode((unsigned char *)alpha, (int)strlen(alpha), buf);
 | 
	
		
			
				|  |  | +	len = 9999;
 | 
	
		
			
				|  |  | +	base64_encode((unsigned char *)alpha, (int)strlen(alpha), buf, &len);
 | 
	
		
			
				|  |  |  	ck_assert_str_eq(buf, alpha_b64_enc);
 | 
	
		
			
				|  |  | +	ck_assert_int_eq((int)len, (int)strlen(alpha_b64_enc) + 1);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  | -	base64_encode((unsigned char *)nonalpha, (int)strlen(nonalpha), buf);
 | 
	
		
			
				|  |  | +	len = 9999;
 | 
	
		
			
				|  |  | +	base64_encode((unsigned char *)nonalpha, (int)strlen(nonalpha), buf, &len);
 | 
	
		
			
				|  |  |  	ck_assert_str_eq(buf, nonalpha_b64_enc);
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  | +	ck_assert_int_eq((int)len, (int)strlen(nonalpha_b64_enc) + 1);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -#if defined(USE_LUA)
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  |  	len = 9999;
 | 
	
		
			
				|  |  |  	ret = base64_decode((unsigned char *)alpha_b64_enc,
 | 
	
	
		
			
				|  | @@ -1016,14 +1029,13 @@ START_TEST(test_encode_decode)
 | 
	
		
			
				|  |  |  	                    buf,
 | 
	
		
			
				|  |  |  	                    &len);
 | 
	
		
			
				|  |  |  	ck_assert_int_eq(ret, -1);
 | 
	
		
			
				|  |  | -	ck_assert_uint_eq((unsigned int)len, (unsigned int)strlen(alpha));
 | 
	
		
			
				|  |  | +	ck_assert_int_eq((int)len, (int)strlen(alpha) + 1);
 | 
	
		
			
				|  |  |  	ck_assert_str_eq(buf, alpha);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  |  	len = 9999;
 | 
	
		
			
				|  |  |  	ret = base64_decode((unsigned char *)"AAA*AAA", 7, buf, &len);
 | 
	
		
			
				|  |  |  	ck_assert_int_eq(ret, 3);
 | 
	
		
			
				|  |  | -#endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	memset(buf, 77, sizeof(buf));
 | 
	
		
			
				|  |  |  	ret = mg_url_encode(alpha, buf, sizeof(buf));
 |