@@ -727,10 +727,14 @@ esp_websocket_client_handle_t esp_websocket_client_init(const esp_websocket_clie
727727 ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config , goto _websocket_init_fail );
728728
729729 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+ }
731733 ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> scheme , goto _websocket_init_fail );
732734 } 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+ }
734738 ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> scheme , goto _websocket_init_fail );
735739 }
736740
@@ -775,7 +779,9 @@ esp_websocket_client_handle_t esp_websocket_client_init(const esp_websocket_clie
775779 }
776780
777781 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+ }
779785 ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> scheme , goto _websocket_init_fail );
780786 }
781787
@@ -852,26 +858,34 @@ esp_err_t esp_websocket_client_set_uri(esp_websocket_client_handle_t client, con
852858 }
853859 if (puri .field_data [UF_SCHEMA ].len ) {
854860 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+ }
856864 ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> scheme , return ESP_ERR_NO_MEM );
857865 }
858866
859867 if (puri .field_data [UF_HOST ].len ) {
860868 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+ }
862872 ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> host , return ESP_ERR_NO_MEM );
863873 }
864874
865875
866876 if (puri .field_data [UF_PATH ].len || puri .field_data [UF_QUERY ].len ) {
867877 free (client -> config -> path );
878+ int aret = -1 ;
868879 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 );
870881 } 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 );
872883 } 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 ;
875889 }
876890 ESP_WS_CLIENT_MEM_CHECK (TAG , client -> config -> path , return ESP_ERR_NO_MEM );
877891 }
@@ -881,7 +895,9 @@ esp_err_t esp_websocket_client_set_uri(esp_websocket_client_handle_t client, con
881895
882896 if (puri .field_data [UF_USERINFO ].len ) {
883897 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+ }
885901 if (user_info ) {
886902 char * pass = strchr (user_info , ':' );
887903 if (pass ) {
0 commit comments