diff --git a/apps/meteor/client/lib/e2ee/rocketchat.e2e.ts b/apps/meteor/client/lib/e2ee/rocketchat.e2e.ts index 5e04134ed5065..bd008b86a887a 100644 --- a/apps/meteor/client/lib/e2ee/rocketchat.e2e.ts +++ b/apps/meteor/client/lib/e2ee/rocketchat.e2e.ts @@ -1,6 +1,3 @@ -import QueryString from 'querystring'; -import URL from 'url'; - import type { IE2EEMessage, IMessage, IRoom, IUser, IUploadWithUser, Serialized, IE2EEPinnedMessage } from '@rocket.chat/core-typings'; import { isE2EEMessage, isEncryptedMessageContent } from '@rocket.chat/core-typings'; import { Emitter } from '@rocket.chat/emitter'; @@ -731,15 +728,18 @@ class E2E extends Emitter { return; } - const urlObj = URL.parse(url); - // if the URL doesn't have query params (doesn't reference message) skip - if (!urlObj.query) { + // URLs come from regex-matched message content, so they may be malformed; skip those instead of throwing + let urlObj: URL; + try { + urlObj = new URL(url); + } catch (error) { return; } - const { msg: msgId } = QueryString.parse(urlObj.query); + const [msgId, ...extraMsgIds] = urlObj.searchParams.getAll('msg'); - if (!msgId || Array.isArray(msgId)) { + // skip if the msg param is missing, empty, or duplicated + if (!msgId || extraMsgIds.length) { return; } diff --git a/apps/meteor/imports/client/hepburn b/apps/meteor/imports/client/hepburn deleted file mode 120000 index f439383d3132e..0000000000000 --- a/apps/meteor/imports/client/hepburn +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/hepburn \ No newline at end of file diff --git a/apps/meteor/imports/client/limax b/apps/meteor/imports/client/limax deleted file mode 120000 index 4407cb1ffef0b..0000000000000 --- a/apps/meteor/imports/client/limax +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/limax \ No newline at end of file diff --git a/apps/meteor/imports/client/map-age-cleaner b/apps/meteor/imports/client/map-age-cleaner deleted file mode 120000 index 50bce06f634f8..0000000000000 --- a/apps/meteor/imports/client/map-age-cleaner +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/map-age-cleaner \ No newline at end of file diff --git a/apps/meteor/imports/client/mem b/apps/meteor/imports/client/mem deleted file mode 120000 index b6dfce3fa0c6b..0000000000000 --- a/apps/meteor/imports/client/mem +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/mem \ No newline at end of file diff --git a/apps/meteor/imports/client/mimic-fn/index.js b/apps/meteor/imports/client/mimic-fn/index.js deleted file mode 120000 index 3e62681b7465e..0000000000000 --- a/apps/meteor/imports/client/mimic-fn/index.js +++ /dev/null @@ -1 +0,0 @@ -../../../node_modules/mem/node_modules/mimic-fn/index.js \ No newline at end of file diff --git a/apps/meteor/imports/client/p-defer b/apps/meteor/imports/client/p-defer deleted file mode 120000 index f68aea0461afc..0000000000000 --- a/apps/meteor/imports/client/p-defer +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/p-defer \ No newline at end of file diff --git a/apps/meteor/imports/client/poly1305-js b/apps/meteor/imports/client/poly1305-js deleted file mode 120000 index b7d35ec5ea8ae..0000000000000 --- a/apps/meteor/imports/client/poly1305-js +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/poly1305-js \ No newline at end of file diff --git a/apps/meteor/imports/client/query-string b/apps/meteor/imports/client/query-string deleted file mode 120000 index 3d5529bafa0b8..0000000000000 --- a/apps/meteor/imports/client/query-string +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/query-string/ \ No newline at end of file diff --git a/apps/meteor/imports/client/scheduler b/apps/meteor/imports/client/scheduler deleted file mode 120000 index d6ef6285d8c08..0000000000000 --- a/apps/meteor/imports/client/scheduler +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/scheduler/ \ No newline at end of file diff --git a/apps/meteor/imports/client/sodium-native b/apps/meteor/imports/client/sodium-native deleted file mode 120000 index 31ec3807c5331..0000000000000 --- a/apps/meteor/imports/client/sodium-native +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/sodium-native \ No newline at end of file diff --git a/apps/meteor/imports/client/sodium-plus b/apps/meteor/imports/client/sodium-plus deleted file mode 120000 index e22307d4690fd..0000000000000 --- a/apps/meteor/imports/client/sodium-plus +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/sodium-plus \ No newline at end of file diff --git a/apps/meteor/imports/client/split-on-first b/apps/meteor/imports/client/split-on-first deleted file mode 120000 index ac3c776940471..0000000000000 --- a/apps/meteor/imports/client/split-on-first +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/split-on-first/ \ No newline at end of file diff --git a/apps/meteor/imports/client/strict-uri-encode b/apps/meteor/imports/client/strict-uri-encode deleted file mode 120000 index 77c01a2aedbbd..0000000000000 --- a/apps/meteor/imports/client/strict-uri-encode +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/strict-uri-encode/ \ No newline at end of file