1From 51c95a23bff3a024dc19e3127ca751e1458be0f0 Mon Sep 17 00:00:00 2001 2From: Khem Raj <raj.khem@gmail.com> 3Date: Mon, 5 Apr 2021 11:36:50 -0700 4Subject: [PATCH] Migrate to use g_memdup2 5 6g_memdup has been deprecated for long and latest glib-2.0 2.68+ has 7turned it int an error to use old function. 8 9The fall-back to g_memdup isn't needed because pidgin provides g_memdup2 10in pidgin-sipe/1.25.0-r0/recipe-sysroot/usr/include/libpurple/glibcompat.h 11based on glib-2.0 version: 12 /* Backport the static inline version of g_memdup2 if we don't have g_memdup2. 13 * see https://mail.gnome.org/archives/desktop-devel-list/2021-February/msg00000.html 14 * for more information. 15 */ 16 #if !GLIB_CHECK_VERSION(2, 67, 3) 17 static inline gpointer 18 g_memdup2(gconstpointer mem, gsize byte_size) { 19 gpointer new_mem = NULL; 20 21 if(mem && byte_size != 0) { 22 new_mem = g_malloc (byte_size); 23 memcpy (new_mem, mem, byte_size); 24 } 25 26 return new_mem; 27 } 28 #endif /* !GLIB_CHECK_VERSION(2, 67, 3) */ 29 30Upstream-Status: Pending 31Signed-off-by: Khem Raj <raj.khem@gmail.com> 32--- 33 src/api/sipe-common.h | 3 +++ 34 src/core/sip-sec-gssapi.c | 4 ++-- 35 src/core/sip-sec-ntlm.c | 12 ++++++------ 36 src/core/sip-sec-tls-dsk.c | 4 ++-- 37 src/core/sipe-media.c | 2 +- 38 src/core/sipe-tls-tester.c | 2 +- 39 src/core/sipe-tls.c | 4 ++-- 40 src/telepathy/telepathy-protocol.c | 2 +- 41 8 files changed, 18 insertions(+), 15 deletions(-) 42 43diff --git a/src/api/sipe-common.h b/src/api/sipe-common.h 44index c964f15..cab81e0 100644 45--- a/src/api/sipe-common.h 46+++ b/src/api/sipe-common.h 47@@ -51,3 +51,6 @@ 48 #ifdef _MSC_VER 49 typedef long ssize_t; 50 #endif 51+ 52+// for g_memdup2 53+#include <libpurple/glibcompat.h> 54diff --git a/src/core/sip-sec-gssapi.c b/src/core/sip-sec-gssapi.c 55index 873080f..4c63868 100644 56--- a/src/core/sip-sec-gssapi.c 57+++ b/src/core/sip-sec-gssapi.c 58@@ -602,7 +602,7 @@ sip_sec_init_sec_context__gssapi(SipSecContext context, 59 60 out_buff->length = output_token.length; 61 if (out_buff->length) 62- out_buff->value = g_memdup(output_token.value, output_token.length); 63+ out_buff->value = g_memdup2(output_token.value, output_token.length); 64 else 65 /* Special case: empty token */ 66 out_buff->value = (guint8 *) g_strdup(""); 67@@ -653,7 +653,7 @@ sip_sec_make_signature__gssapi(SipSecContext context, 68 return FALSE; 69 } else { 70 signature->length = output_token.length; 71- signature->value = g_memdup(output_token.value, 72+ signature->value = g_memdup2(output_token.value, 73 output_token.length); 74 gss_release_buffer(&minor, &output_token); 75 return TRUE; 76diff --git a/src/core/sip-sec-ntlm.c b/src/core/sip-sec-ntlm.c 77index 2e2354f..1fa4daa 100644 78--- a/src/core/sip-sec-ntlm.c 79+++ b/src/core/sip-sec-ntlm.c 80@@ -951,7 +951,7 @@ sip_sec_ntlm_parse_challenge(SipSecBuffer in_buff, 81 82 /* server challenge (nonce) */ 83 if (server_challenge) { 84- *server_challenge = g_memdup(cmsg->nonce, 8); 85+ *server_challenge = g_memdup2(cmsg->nonce, 8); 86 } 87 88 /* flags */ 89@@ -984,7 +984,7 @@ sip_sec_ntlm_parse_challenge(SipSecBuffer in_buff, 90 *target_info_len = len; 91 } 92 if (target_info) { 93- *target_info = g_memdup(content, len); 94+ *target_info = g_memdup2(content, len); 95 } 96 } 97 } 98@@ -1117,13 +1117,13 @@ sip_sec_ntlm_gen_authenticate(guchar **client_sign_key, 99 Set ServerSigningKey to SIGNKEY(ExportedSessionKey, "Server") 100 */ 101 SIGNKEY(exported_session_key, TRUE, key); 102- *client_sign_key = g_memdup(key, 16); 103+ *client_sign_key = g_memdup2(key, 16); 104 SIGNKEY(exported_session_key, FALSE, key); 105- *server_sign_key = g_memdup(key, 16); 106+ *server_sign_key = g_memdup2(key, 16); 107 SEALKEY(neg_flags, exported_session_key, TRUE, key); 108- *client_seal_key = g_memdup(key, 16); 109+ *client_seal_key = g_memdup2(key, 16); 110 SEALKEY(neg_flags, exported_session_key, FALSE, key); 111- *server_seal_key = g_memdup(key, 16); 112+ *server_seal_key = g_memdup2(key, 16); 113 } 114 115 /* @TODO: */ 116diff --git a/src/core/sip-sec-tls-dsk.c b/src/core/sip-sec-tls-dsk.c 117index 70433ea..2d3f2db 100644 118--- a/src/core/sip-sec-tls-dsk.c 119+++ b/src/core/sip-sec-tls-dsk.c 120@@ -88,9 +88,9 @@ sip_sec_init_sec_context__tls_dsk(SipSecContext context, 121 /* copy key pair */ 122 ctx->algorithm = state->algorithm; 123 ctx->key_length = state->key_length; 124- ctx->client_key = g_memdup(state->client_key, 125+ ctx->client_key = g_memdup2(state->client_key, 126 state->key_length); 127- ctx->server_key = g_memdup(state->server_key, 128+ ctx->server_key = g_memdup2(state->server_key, 129 state->key_length); 130 131 /* extract certicate expiration time */ 132diff --git a/src/core/sipe-media.c b/src/core/sipe-media.c 133index e9c4b8a..936e31c 100644 134--- a/src/core/sipe-media.c 135+++ b/src/core/sipe-media.c 136@@ -578,7 +578,7 @@ media_stream_to_sdpmedia(struct sipe_media_call_private *call_private, 137 // Set our key if encryption is enabled. 138 if (stream_private->encryption_key && 139 encryption_policy != SIPE_ENCRYPTION_POLICY_REJECTED) { 140- sdpmedia->encryption_key = g_memdup(stream_private->encryption_key, 141+ sdpmedia->encryption_key = g_memdup2(stream_private->encryption_key, 142 SIPE_SRTP_KEY_LEN); 143 sdpmedia->encryption_key_id = stream_private->encryption_key_id; 144 } 145diff --git a/src/core/sipe-tls-tester.c b/src/core/sipe-tls-tester.c 146index e80d715..5fbb5f8 100644 147--- a/src/core/sipe-tls-tester.c 148+++ b/src/core/sipe-tls-tester.c 149@@ -155,7 +155,7 @@ static guchar *read_tls_record(int fd, 150 printf("received %d bytes from server\n", result); 151 record = g_new0(struct record, 1); 152 record->length = result; 153- record->msg = g_memdup(buffer, result); 154+ record->msg = g_memdup2(buffer, result); 155 length += result; 156 fragments = g_slist_append(fragments, record); 157 } 158diff --git a/src/core/sipe-tls.c b/src/core/sipe-tls.c 159index b0235d5..020aedb 100644 160--- a/src/core/sipe-tls.c 161+++ b/src/core/sipe-tls.c 162@@ -427,7 +427,7 @@ static guchar *sipe_tls_prf(SIPE_UNUSED_PARAMETER struct tls_internal_state *sta 163 gsize half = (secret_length + 1) / 2; 164 gsize newseed_length = label_length + seed_length; 165 /* secret: used as S1; secret2: last half of original secret (S2) */ 166- guchar *secret2 = g_memdup(secret + secret_length - half, half); 167+ guchar *secret2 = g_memdup2(secret + secret_length - half, half); 168 guchar *newseed = g_malloc(newseed_length); 169 guchar *md5, *dest; 170 guchar *sha1, *src; 171@@ -1525,7 +1525,7 @@ static struct tls_compiled_message *tls_client_key_exchange(struct tls_internal_ 172 173 /* found all the required fields */ 174 state->server_random.length = server_random->length; 175- state->server_random.buffer = g_memdup(server_random->data, 176+ state->server_random.buffer = g_memdup2(server_random->data, 177 server_random->length); 178 tls_calculate_secrets(state); 179 180diff --git a/src/telepathy/telepathy-protocol.c b/src/telepathy/telepathy-protocol.c 181index f6e5337..1dde579 100644 182--- a/src/telepathy/telepathy-protocol.c 183+++ b/src/telepathy/telepathy-protocol.c 184@@ -237,7 +237,7 @@ static void get_connection_details(SIPE_UNUSED_PARAMETER TpBaseProtocol *self, 185 SIPE_TYPE_SEARCH_MANAGER, 186 G_TYPE_INVALID 187 }; 188- *channel_managers = g_memdup(types, sizeof(types)); 189+ *channel_managers = g_memdup2(types, sizeof(types)); 190 } 191 if (icon_name) 192 *icon_name = g_strdup("im-" SIPE_TELEPATHY_DOMAIN); 193