This is an automated email from the ASF dual-hosted git repository. jmuehlner pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/guacamole-server.git
commit bb14ee9780021121c89d348d0ccbcb3a2725c030 Merge: 97870177 690808da Author: James Muehlner <[email protected]> AuthorDate: Thu Oct 26 03:43:28 2023 +0000 Merge 1.5.4 changes back to master. doc/libguac/Doxyfile.in | 3 +- src/common-ssh/buffer.c | 6 +- src/common-ssh/common-ssh/ssh.h | 2 +- src/common-ssh/key.c | 14 +- src/common-ssh/sftp.c | 21 +- src/common-ssh/ssh.c | 22 +- src/common-ssh/tests/sftp/normalize_path.c | 24 +- src/common-ssh/user.c | 19 +- src/common/clipboard.c | 10 +- src/common/common/cursor.h | 2 +- src/common/common/string.h | 32 +- src/common/cursor.c | 17 +- src/common/display.c | 15 +- src/common/list.c | 12 +- src/common/string.c | 21 +- src/common/surface.c | 33 +- src/common/tests/Makefile.am | 3 +- src/common/tests/string/split.c | 13 +- src/guacd/conf-args.c | 23 +- src/guacd/conf-file.c | 32 +- src/guacd/connection.c | 11 +- src/guacd/daemon.c | 9 +- src/guacd/proc-map.c | 5 +- src/guacd/proc.c | 13 +- src/guacenc/buffer.c | 9 +- src/guacenc/cursor.c | 8 +- src/guacenc/display.c | 5 +- src/guacenc/ffmpeg-compat.c | 12 +- src/guacenc/image-stream.c | 14 +- src/guacenc/image-stream.h | 6 +- src/guacenc/jpeg.c | 5 +- src/guacenc/layer.c | 10 +- src/guacenc/video.c | 5 +- src/guaclog/keydef.c | 15 +- src/guaclog/state.c | 7 +- src/libguac/Makefile.am | 19 + src/libguac/argv.c | 5 +- src/libguac/audio.c | 7 +- src/libguac/client.c | 21 +- src/libguac/encode-jpeg.c | 7 +- src/libguac/encode-png.c | 9 +- src/libguac/error.c | 13 +- src/libguac/guacamole/mem.h | 413 +++++++++++++++++++++ src/libguac/guacamole/private/mem.h | 317 ++++++++++++++++ src/libguac/guacamole/string.h | 13 +- src/libguac/id.c | 5 +- src/libguac/id.h | 11 +- src/libguac/mem.c | 251 +++++++++++++ src/libguac/palette.c | 6 +- src/libguac/parser.c | 5 +- src/libguac/pool.c | 13 +- src/libguac/raw_encoder.c | 14 +- src/libguac/raw_encoder.h | 2 +- src/libguac/recording.c | 5 +- src/libguac/socket-broadcast.c | 5 +- src/libguac/socket-fd.c | 5 +- src/libguac/socket-nest.c | 5 +- src/libguac/socket-ssl.c | 7 +- src/libguac/socket-tee.c | 5 +- src/libguac/socket-wsa.c | 5 +- src/libguac/socket.c | 5 +- src/libguac/string.c | 16 +- src/libguac/tests/Makefile.am | 14 + src/libguac/tests/assert-signal.h | 67 ++++ src/libguac/tests/id/generate.c | 11 +- src/libguac/tests/mem/alloc.c | 73 ++++ src/libguac/tests/mem/ckd_add.c | 103 +++++ src/libguac/tests/mem/ckd_add_or_die.c | 72 ++++ src/libguac/tests/mem/ckd_mul.c | 99 +++++ src/libguac/tests/mem/ckd_mul_or_die.c | 68 ++++ src/libguac/tests/mem/ckd_sub.c | 105 ++++++ src/libguac/tests/mem/ckd_sub_or_die.c | 74 ++++ src/libguac/tests/mem/free.c | 63 ++++ src/libguac/tests/mem/realloc.c | 118 ++++++ src/libguac/tests/mem/realloc_or_die.c | 120 ++++++ src/libguac/tests/mem/zalloc.c | 102 +++++ src/libguac/tests/string/strdup.c | 5 +- src/libguac/user-handlers.c | 19 +- src/libguac/user-handshake.c | 5 +- src/libguac/user.c | 26 +- src/protocols/kubernetes/client.c | 5 +- src/protocols/kubernetes/kubernetes.c | 3 +- src/protocols/kubernetes/settings.c | 33 +- src/protocols/rdp/argv.c | 16 +- src/protocols/rdp/beep.c | 7 +- .../rdp/channels/audio-input/audio-buffer.c | 28 +- .../rdp/channels/audio-input/audio-buffer.h | 4 +- src/protocols/rdp/channels/cliprdr.c | 11 +- src/protocols/rdp/channels/common-svc.c | 5 +- src/protocols/rdp/channels/disp.c | 5 +- src/protocols/rdp/channels/pipe-svc.c | 5 +- .../rdp/channels/rdpdr/rdpdr-fs-messages.c | 5 +- src/protocols/rdp/channels/rdpdr/rdpdr.c | 5 +- src/protocols/rdp/channels/rdpei.c | 5 +- src/protocols/rdp/channels/rdpsnd/rdpsnd.c | 6 +- src/protocols/rdp/client.c | 5 +- src/protocols/rdp/download.c | 11 +- src/protocols/rdp/fs.c | 17 +- src/protocols/rdp/glyph.c | 5 +- src/protocols/rdp/keyboard.c | 5 +- src/protocols/rdp/ls.c | 5 +- src/protocols/rdp/plugins/channels.c | 3 +- .../rdp/plugins/guac-common-svc/guac-common-svc.c | 3 +- src/protocols/rdp/plugins/guacai/guacai.c | 13 +- src/protocols/rdp/print-job.c | 7 +- src/protocols/rdp/rdp.c | 7 +- src/protocols/rdp/settings.c | 77 ++-- src/protocols/rdp/tests/fs/normalize_path.c | 20 +- src/protocols/rdp/upload.c | 7 +- src/protocols/ssh/client.c | 5 +- src/protocols/ssh/settings.c | 47 +-- src/protocols/ssh/ssh.c | 3 +- src/protocols/ssh/ssh_agent.c | 3 +- src/protocols/telnet/client.c | 5 +- src/protocols/telnet/input.c | 5 +- src/protocols/telnet/settings.c | 39 +- src/protocols/telnet/telnet.c | 3 +- src/protocols/vnc/argv.c | 12 +- src/protocols/vnc/client.c | 5 +- src/protocols/vnc/cursor.c | 5 +- src/protocols/vnc/display.c | 5 +- src/protocols/vnc/settings.c | 45 +-- src/pulse/pulse.c | 5 +- src/terminal/buffer.c | 20 +- src/terminal/display.c | 15 +- src/terminal/scrollbar.c | 5 +- src/terminal/terminal.c | 30 +- src/terminal/terminal/terminal.h | 2 +- src/terminal/typescript.c | 11 +- 129 files changed, 2816 insertions(+), 573 deletions(-) diff --cc src/common-ssh/user.c index 79c8590a,24c74dce..7c254832 --- a/src/common-ssh/user.c +++ b/src/common-ssh/user.c @@@ -25,13 -28,12 +28,13 @@@ guac_common_ssh_user* guac_common_ssh_create_user(const char* username) { - guac_common_ssh_user* user = malloc(sizeof(guac_common_ssh_user)); + guac_common_ssh_user* user = guac_mem_alloc(sizeof(guac_common_ssh_user)); /* Init user */ - user->username = strdup(username); + user->username = guac_strdup(username); user->password = NULL; user->private_key = NULL; + user->public_key = NULL; return user; @@@ -44,10 -46,9 +47,10 @@@ void guac_common_ssh_destroy_user(guac_ guac_common_ssh_key_free(user->private_key); /* Free all other data */ - free(user->password); - free(user->username); - free(user->public_key); - free(user); + guac_mem_free(user->password); + guac_mem_free(user->username); ++ guac_mem_free(user->public_key); + guac_mem_free(user); } diff --cc src/protocols/rdp/settings.c index 47ca0aee,b259fc9d..fb2217a6 --- a/src/protocols/rdp/settings.c +++ b/src/protocols/rdp/settings.c @@@ -1318,23 -1279,22 +1319,23 @@@ guac_rdp_settings* guac_rdp_parse_args( void guac_rdp_settings_free(guac_rdp_settings* settings) { /* Free settings strings */ - free(settings->client_name); - free(settings->domain); - free(settings->drive_name); - free(settings->drive_path); - free(settings->hostname); - free(settings->certificate_fingerprints); - free(settings->initial_program); - free(settings->password); - free(settings->preconnection_blob); - free(settings->recording_name); - free(settings->recording_path); - free(settings->remote_app); - free(settings->remote_app_args); - free(settings->remote_app_dir); - free(settings->timezone); - free(settings->username); - free(settings->printer_name); + guac_mem_free(settings->client_name); + guac_mem_free(settings->domain); + guac_mem_free(settings->drive_name); + guac_mem_free(settings->drive_path); + guac_mem_free(settings->hostname); ++ guac_mem_free(settings->certificate_fingerprints); + guac_mem_free(settings->initial_program); + guac_mem_free(settings->password); + guac_mem_free(settings->preconnection_blob); + guac_mem_free(settings->recording_name); + guac_mem_free(settings->recording_path); + guac_mem_free(settings->remote_app); + guac_mem_free(settings->remote_app_args); + guac_mem_free(settings->remote_app_dir); + guac_mem_free(settings->timezone); + guac_mem_free(settings->username); + guac_mem_free(settings->printer_name); /* Free channel name array */ if (settings->svc_names != NULL) { diff --cc src/protocols/ssh/settings.c index dd2eba7e,ea890cec..228068b2 --- a/src/protocols/ssh/settings.c +++ b/src/protocols/ssh/settings.c @@@ -568,49 -559,48 +569,49 @@@ guac_ssh_settings* guac_ssh_parse_args( void guac_ssh_settings_free(guac_ssh_settings* settings) { /* Free network connection information */ - free(settings->hostname); - free(settings->host_key); - free(settings->port); + guac_mem_free(settings->hostname); + guac_mem_free(settings->host_key); + guac_mem_free(settings->port); /* Free credentials */ - free(settings->username); - free(settings->password); - free(settings->key_base64); - free(settings->key_passphrase); - free(settings->public_key_base64); + guac_mem_free(settings->username); + guac_mem_free(settings->password); + guac_mem_free(settings->key_base64); + guac_mem_free(settings->key_passphrase); ++ guac_mem_free(settings->public_key_base64); /* Free display preferences */ - free(settings->font_name); - free(settings->color_scheme); + guac_mem_free(settings->font_name); + guac_mem_free(settings->color_scheme); /* Free requested command */ - free(settings->command); + guac_mem_free(settings->command); /* Free SFTP settings */ - free(settings->sftp_root_directory); + guac_mem_free(settings->sftp_root_directory); /* 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 locale */ - free(settings->locale); + guac_mem_free(settings->locale); /* Free the client timezone. */ - free(settings->timezone); + guac_mem_free(settings->timezone); /* Free Wake-on-LAN 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); } diff --cc src/terminal/terminal.c index 5be5b1d8,77141aa7..539d1e94 --- a/src/terminal/terminal.c +++ b/src/terminal/terminal.c @@@ -455,17 -365,26 +457,17 @@@ guac_terminal* guac_terminal_create(gua &default_char.attributes.background, default_palette); - guac_terminal* term = malloc(sizeof(guac_terminal)); - /* Calculate available display area */ - int available_width = width - GUAC_TERMINAL_SCROLLBAR_WIDTH; - if (available_width < 0) - available_width = 0; - + guac_terminal* term = guac_mem_alloc(sizeof(guac_terminal)); term->started = false; term->client = client; term->upload_path_handler = NULL; term->file_download_handler = NULL; /* Copy initially-provided color scheme and font details */ - term->color_scheme = strdup(options->color_scheme); - term->font_name = strdup(options->font_name); + term->color_scheme = guac_strdup(options->color_scheme); + term->font_name = guac_strdup(options->font_name); term->font_size = options->font_size; - /* Set size of available screen area */ - term->outer_width = width; - term->outer_height = height; - /* Init modified flag and conditional */ term->modified = 0; pthread_cond_init(&(term->modified_cond), NULL);
