GUACAMOLE-1867: Migrate telnet to new memory management functions.

This commit is contained in:
Mike Jumper 2023-10-15 23:25:39 -07:00
parent 944718174d
commit cf1039845f
4 changed files with 28 additions and 24 deletions

View File

@ -33,6 +33,7 @@
#include <guacamole/argv.h>
#include <guacamole/client.h>
#include <guacamole/mem.h>
#include <guacamole/recording.h>
#include <guacamole/socket.h>
@ -68,7 +69,7 @@ int guac_client_init(guac_client* client) {
client->args = GUAC_TELNET_CLIENT_ARGS;
/* Allocate client instance data */
guac_telnet_client* telnet_client = calloc(1, sizeof(guac_telnet_client));
guac_telnet_client* telnet_client = guac_mem_zalloc(sizeof(guac_telnet_client));
client->data = telnet_client;
/* Init telnet client */
@ -125,7 +126,7 @@ int guac_telnet_client_free_handler(guac_client* client) {
if (telnet_client->settings != NULL)
guac_telnet_settings_free(telnet_client->settings);
free(telnet_client);
guac_mem_free(telnet_client);
return 0;
}

View File

@ -23,6 +23,7 @@
#include "telnet.h"
#include <guacamole/client.h>
#include <guacamole/mem.h>
#include <guacamole/recording.h>
#include <guacamole/user.h>
#include <libtelnet.h>
@ -79,7 +80,7 @@ int guac_telnet_user_key_handler(guac_user* user, int keysym, int pressed) {
"Stopping password prompt search due to user input.");
regfree(settings->password_regex);
free(settings->password_regex);
guac_mem_free(settings->password_regex);
settings->password_regex = NULL;
}
@ -91,7 +92,7 @@ int guac_telnet_user_key_handler(guac_user* user, int keysym, int pressed) {
"Stopping username prompt search due to user input.");
regfree(settings->username_regex);
free(settings->username_regex);
guac_mem_free(settings->username_regex);
settings->username_regex = NULL;
}

View File

@ -24,6 +24,7 @@
#include "settings.h"
#include "terminal/terminal.h"
#include <guacamole/mem.h>
#include <guacamole/user.h>
#include <guacamole/wol-constants.h>
@ -278,7 +279,7 @@ enum TELNET_ARGS_IDX {
/**
* Compiles the given regular expression, returning NULL if compilation fails
* or of the given regular expression is NULL. The returned regex_t must be
* freed with regfree() AND free(), or with guac_telnet_regex_free().
* freed with regfree() AND guac_mem_free(), or with guac_telnet_regex_free().
*
* @param user
* The user who provided the setting associated with the given regex
@ -298,7 +299,7 @@ static regex_t* guac_telnet_compile_regex(guac_user* user, char* pattern) {
return NULL;
int compile_result;
regex_t* regex = malloc(sizeof(regex_t));
regex_t* regex = guac_mem_alloc(sizeof(regex_t));
/* Compile regular expression */
compile_result = regcomp(regex, pattern,
@ -308,7 +309,7 @@ static regex_t* guac_telnet_compile_regex(guac_user* user, char* pattern) {
if (compile_result != 0) {
guac_user_log(user, GUAC_LOG_ERROR, "Regular expression '%s' "
"could not be compiled.", pattern);
free(regex);
guac_mem_free(regex);
return NULL;
}
@ -318,7 +319,7 @@ static regex_t* guac_telnet_compile_regex(guac_user* user, char* pattern) {
void guac_telnet_regex_free(regex_t** regex) {
if (*regex != NULL) {
regfree(*regex);
free(*regex);
guac_mem_free(*regex);
*regex = NULL;
}
}
@ -334,7 +335,7 @@ guac_telnet_settings* guac_telnet_parse_args(guac_user* user,
return NULL;
}
guac_telnet_settings* settings = calloc(1, sizeof(guac_telnet_settings));
guac_telnet_settings* settings = guac_mem_zalloc(sizeof(guac_telnet_settings));
/* Read parameters */
settings->hostname =
@ -538,12 +539,12 @@ guac_telnet_settings* guac_telnet_parse_args(guac_user* user,
void guac_telnet_settings_free(guac_telnet_settings* settings) {
/* Free network connection information */
free(settings->hostname);
free(settings->port);
guac_mem_free(settings->hostname);
guac_mem_free(settings->port);
/* Free credentials */
free(settings->username);
free(settings->password);
guac_mem_free(settings->username);
guac_mem_free(settings->password);
/* Free various regexes */
guac_telnet_regex_free(&settings->username_regex);
@ -552,26 +553,26 @@ void guac_telnet_settings_free(guac_telnet_settings* settings) {
guac_telnet_regex_free(&settings->login_failure_regex);
/* Free display preferences */
free(settings->font_name);
free(settings->color_scheme);
guac_mem_free(settings->font_name);
guac_mem_free(settings->color_scheme);
/* Free typescript settings */
free(settings->typescript_name);
free(settings->typescript_path);
guac_mem_free(settings->typescript_name);
guac_mem_free(settings->typescript_path);
/* Free screen recording settings */
free(settings->recording_name);
free(settings->recording_path);
guac_mem_free(settings->recording_name);
guac_mem_free(settings->recording_path);
/* Free terminal emulator type. */
free(settings->terminal_type);
guac_mem_free(settings->terminal_type);
/* Free WoL settings. */
free(settings->wol_mac_addr);
free(settings->wol_broadcast_addr);
guac_mem_free(settings->wol_mac_addr);
guac_mem_free(settings->wol_broadcast_addr);
/* Free overall structure */
free(settings);
guac_mem_free(settings);
}

View File

@ -24,6 +24,7 @@
#include "terminal/terminal.h"
#include <guacamole/client.h>
#include <guacamole/mem.h>
#include <guacamole/protocol.h>
#include <guacamole/recording.h>
#include <guacamole/timestamp.h>
@ -604,7 +605,7 @@ void* guac_telnet_client_thread(void* data) {
telnet_client->term = guac_terminal_create(client, options);
/* Free options struct now that it's been used */
free(options);
guac_mem_free(options);
/* Fail if terminal init failed */
if (telnet_client->term == NULL) {