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);

Reply via email to