@@ -727,10 +727,14 @@ esp_websocket_client_handle_t esp_websocket_client_init(const esp_websocket_clie
727
727
ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config , goto _websocket_init_fail );
728
728
729
729
if (config -> transport == WEBSOCKET_TRANSPORT_OVER_TCP ) {
730
- asprintf (& client -> config -> scheme , WS_OVER_TCP_SCHEME );
730
+ if (asprintf (& client -> config -> scheme , WS_OVER_TCP_SCHEME ) < 0 ) {
731
+ client -> config -> scheme = NULL ;
732
+ }
731
733
ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> scheme , goto _websocket_init_fail );
732
734
} else if (config -> transport == WEBSOCKET_TRANSPORT_OVER_SSL ) {
733
- asprintf (& client -> config -> scheme , WS_OVER_TLS_SCHEME );
735
+ if (asprintf (& client -> config -> scheme , WS_OVER_TLS_SCHEME ) < 0 ) {
736
+ client -> config -> scheme = NULL ;
737
+ }
734
738
ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> scheme , goto _websocket_init_fail );
735
739
}
736
740
@@ -775,7 +779,9 @@ esp_websocket_client_handle_t esp_websocket_client_init(const esp_websocket_clie
775
779
}
776
780
777
781
if (client -> config -> scheme == NULL ) {
778
- asprintf (& client -> config -> scheme , WS_OVER_TCP_SCHEME );
782
+ if (asprintf (& client -> config -> scheme , WS_OVER_TCP_SCHEME ) < 0 ) {
783
+ client -> config -> scheme = NULL ;
784
+ }
779
785
ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> scheme , goto _websocket_init_fail );
780
786
}
781
787
@@ -852,26 +858,34 @@ esp_err_t esp_websocket_client_set_uri(esp_websocket_client_handle_t client, con
852
858
}
853
859
if (puri .field_data [UF_SCHEMA ].len ) {
854
860
free (client -> config -> scheme );
855
- asprintf (& client -> config -> scheme , "%.*s" , puri .field_data [UF_SCHEMA ].len , uri + puri .field_data [UF_SCHEMA ].off );
861
+ if (asprintf (& client -> config -> scheme , "%.*s" , puri .field_data [UF_SCHEMA ].len , uri + puri .field_data [UF_SCHEMA ].off ) < 0 ) {
862
+ client -> config -> scheme = NULL ;
863
+ }
856
864
ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> scheme , return ESP_ERR_NO_MEM );
857
865
}
858
866
859
867
if (puri .field_data [UF_HOST ].len ) {
860
868
free (client -> config -> host );
861
- asprintf (& client -> config -> host , "%.*s" , puri .field_data [UF_HOST ].len , uri + puri .field_data [UF_HOST ].off );
869
+ if (asprintf (& client -> config -> host , "%.*s" , puri .field_data [UF_HOST ].len , uri + puri .field_data [UF_HOST ].off ) < 0 ) {
870
+ client -> config -> host = NULL ;
871
+ }
862
872
ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> host , return ESP_ERR_NO_MEM );
863
873
}
864
874
865
875
866
876
if (puri .field_data [UF_PATH ].len || puri .field_data [UF_QUERY ].len ) {
867
877
free (client -> config -> path );
878
+ int aret = -1 ;
868
879
if (puri .field_data [UF_QUERY ].len == 0 ) {
869
- asprintf (& client -> config -> path , "%.*s" , puri .field_data [UF_PATH ].len , uri + puri .field_data [UF_PATH ].off );
880
+ aret = asprintf (& client -> config -> path , "%.*s" , puri .field_data [UF_PATH ].len , uri + puri .field_data [UF_PATH ].off );
870
881
} else if (puri .field_data [UF_PATH ].len == 0 ) {
871
- asprintf (& client -> config -> path , "/?%.*s" , puri .field_data [UF_QUERY ].len , uri + puri .field_data [UF_QUERY ].off );
882
+ aret = asprintf (& client -> config -> path , "/?%.*s" , puri .field_data [UF_QUERY ].len , uri + puri .field_data [UF_QUERY ].off );
872
883
} else {
873
- asprintf (& client -> config -> path , "%.*s?%.*s" , puri .field_data [UF_PATH ].len , uri + puri .field_data [UF_PATH ].off ,
874
- puri .field_data [UF_QUERY ].len , uri + puri .field_data [UF_QUERY ].off );
884
+ aret = asprintf (& client -> config -> path , "%.*s?%.*s" , puri .field_data [UF_PATH ].len , uri + puri .field_data [UF_PATH ].off ,
885
+ puri .field_data [UF_QUERY ].len , uri + puri .field_data [UF_QUERY ].off );
886
+ }
887
+ if (aret < 0 ) {
888
+ client -> config -> path = NULL ;
875
889
}
876
890
ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> path , return ESP_ERR_NO_MEM );
877
891
}
@@ -881,7 +895,9 @@ esp_err_t esp_websocket_client_set_uri(esp_websocket_client_handle_t client, con
881
895
882
896
if (puri .field_data [UF_USERINFO ].len ) {
883
897
char * user_info = NULL ;
884
- asprintf (& user_info , "%.*s" , puri .field_data [UF_USERINFO ].len , uri + puri .field_data [UF_USERINFO ].off );
898
+ if (asprintf (& user_info , "%.*s" , puri .field_data [UF_USERINFO ].len , uri + puri .field_data [UF_USERINFO ].off ) < 0 ) {
899
+ user_info = NULL ;
900
+ }
885
901
if (user_info ) {
886
902
char * pass = strchr (user_info , ':' );
887
903
if (pass ) {
0 commit comments