@@ -776,6 +776,62 @@ int main(int argc, const char **argv)
776776 }
777777 }
778778
779+ /* sanity check base64 decode */
780+
781+ {
782+ struct lws_b64state b64 ;
783+ uint8_t result [16 ];
784+ size_t in_len , out_len ;
785+
786+ lws_b64_decode_state_init (& b64 );
787+ in_len = 8 ;
788+ out_len = sizeof (result );
789+ if (lws_b64_decode_stateful (& b64 , "YWJjZA==" , & in_len , result , & out_len , 1 )) {
790+ lwsl_err ("%s: b64 test 1 decode failed\n" , __func__ );
791+ return 1 ;
792+ }
793+ if (out_len != 4 ) {
794+ lwsl_err ("%s: b64 test 1 decode len not 4 (%d)\n" , __func__ , (int )out_len );
795+ return 1 ;
796+ }
797+ if (memcmp (result , "abcd" , out_len )) {
798+ lwsl_err ("%s: b64 test 1 decode value not 'abcde' (%.*s)\n" , __func__ , (int )out_len , result );
799+ return 1 ;
800+ }
801+
802+ lws_b64_decode_state_init (& b64 );
803+ in_len = 8 ;
804+ out_len = sizeof (result );
805+ if (lws_b64_decode_stateful (& b64 , "YWJjZGU=" , & in_len , result , & out_len , 1 )) {
806+ lwsl_err ("%s: b64 test 2 decode failed\n" , __func__ );
807+ return 1 ;
808+ }
809+ if (out_len != 5 ) {
810+ lwsl_err ("%s: b64 test 2 decode len not 5 (%d)\n" , __func__ , (int )out_len );
811+ return 1 ;
812+ }
813+ if (memcmp (result , "abcde" , out_len )) {
814+ lwsl_err ("%s: b64 test 2 decode value not 'abcd' (%.*s)\n" , __func__ , (int )out_len , result );
815+ return 1 ;
816+ }
817+
818+ lws_b64_decode_state_init (& b64 );
819+ in_len = 8 ;
820+ out_len = sizeof (result );
821+ if (lws_b64_decode_stateful (& b64 , "YWJjZGVm" , & in_len , result , & out_len , 1 )) {
822+ lwsl_err ("%s: b64 test 3 decode failed\n" , __func__ );
823+ return 1 ;
824+ }
825+ if (out_len != 6 ) {
826+ lwsl_err ("%s: b64 test 3 decode len not 6 (%d)\n" , __func__ , (int )out_len );
827+ return 1 ;
828+ }
829+ if (memcmp (result , "abcdef" , out_len )) {
830+ lwsl_err ("%s: b64 test 3 decode value not 'abcde' (%.*s)\n" , __func__ , (int )out_len , result );
831+ return 1 ;
832+ }
833+ }
834+
779835 /* sanity check lws_strnncpy() */
780836
781837 lws_strnncpy (dotstar , "12345678" , 4 , sizeof (dotstar ));
0 commit comments