diff options
| -rw-r--r-- | meta-oe/recipes-support/xrdp/xrdp/CVE-2022-23480-1.patch | 356 | ||||
| -rw-r--r-- | meta-oe/recipes-support/xrdp/xrdp/CVE-2022-23480-2.patch | 54 | ||||
| -rw-r--r-- | meta-oe/recipes-support/xrdp/xrdp_0.9.20.bb | 2 |
3 files changed, 412 insertions, 0 deletions
diff --git a/meta-oe/recipes-support/xrdp/xrdp/CVE-2022-23480-1.patch b/meta-oe/recipes-support/xrdp/xrdp/CVE-2022-23480-1.patch new file mode 100644 index 0000000000..259044eb00 --- /dev/null +++ b/meta-oe/recipes-support/xrdp/xrdp/CVE-2022-23480-1.patch | |||
| @@ -0,0 +1,356 @@ | |||
| 1 | From 7ad7b05261c698b867c7c4f1bfffb4f911036847 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: matt335672 <30179339+matt335672@users.noreply.github.com> | ||
| 3 | Date: Tue, 6 Dec 2022 12:48:57 +0000 | ||
| 4 | Subject: [PATCH] CVE-2022-23480 | ||
| 5 | |||
| 6 | Added length checking to redirector response parsing | ||
| 7 | |||
| 8 | CVE: CVE-2022-23480 | ||
| 9 | Upstream-Status: Backport [https://github.com/neutrinolabs/xrdp/commit/7ad7b05261c698b867c7c4f1bfffb4f911036847] | ||
| 10 | Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com> | ||
| 11 | --- | ||
| 12 | sesman/chansrv/devredir.c | 151 +++++++++++++++++++++++++++++++------- | ||
| 13 | 1 file changed, 123 insertions(+), 28 deletions(-) | ||
| 14 | |||
| 15 | diff --git a/sesman/chansrv/devredir.c b/sesman/chansrv/devredir.c | ||
| 16 | index a44d47e635..7faa9bfc7a 100644 | ||
| 17 | --- a/sesman/chansrv/devredir.c | ||
| 18 | +++ b/sesman/chansrv/devredir.c | ||
| 19 | @@ -131,10 +131,10 @@ static void devredir_send_server_core_cap_req(void); | ||
| 20 | static void devredir_send_server_clientID_confirm(void); | ||
| 21 | static void devredir_send_server_user_logged_on(void); | ||
| 22 | |||
| 23 | -static void devredir_proc_client_core_cap_resp(struct stream *s); | ||
| 24 | -static void devredir_proc_client_devlist_announce_req(struct stream *s); | ||
| 25 | -static void devredir_proc_client_devlist_remove_req(struct stream *s); | ||
| 26 | -static void devredir_proc_device_iocompletion(struct stream *s); | ||
| 27 | +static int devredir_proc_client_core_cap_resp(struct stream *s); | ||
| 28 | +static int devredir_proc_client_devlist_announce_req(struct stream *s); | ||
| 29 | +static int devredir_proc_client_devlist_remove_req(struct stream *s); | ||
| 30 | +static int devredir_proc_device_iocompletion(struct stream *s); | ||
| 31 | static void devredir_proc_query_dir_response(IRP *irp, | ||
| 32 | struct stream *s_in, | ||
| 33 | tui32 DeviceId, | ||
| 34 | @@ -323,6 +323,11 @@ devredir_data_in(struct stream *s, int chan_id, int chan_flags, int length, | ||
| 35 | } | ||
| 36 | |||
| 37 | /* read header from incoming data */ | ||
| 38 | + if (!s_check_rem_and_log(ls, 4, "Parsing [MS-RDPEFS] RDPDR_HEADER")) | ||
| 39 | + { | ||
| 40 | + rv = -1; | ||
| 41 | + goto done; | ||
| 42 | + } | ||
| 43 | xstream_rd_u16_le(ls, comp_type); | ||
| 44 | xstream_rd_u16_le(ls, pktID); | ||
| 45 | |||
| 46 | @@ -340,27 +345,34 @@ devredir_data_in(struct stream *s, int chan_id, int chan_flags, int length, | ||
| 47 | switch (pktID) | ||
| 48 | { | ||
| 49 | case PAKID_CORE_CLIENTID_CONFIRM: | ||
| 50 | - xstream_seek(ls, 2); /* major version, we ignore it */ | ||
| 51 | - xstream_rd_u16_le(ls, minor_ver); | ||
| 52 | - xstream_rd_u32_le(ls, g_clientID); | ||
| 53 | + if (!s_check_rem_and_log(ls, 6, "Parsing [MS-RDPEFS] DR_CORE_CLIENT_ANNOUNCE_RSP")) | ||
| 54 | + { | ||
| 55 | + rv = -1; | ||
| 56 | + } | ||
| 57 | + else | ||
| 58 | + { | ||
| 59 | + xstream_seek(ls, 2); /* major version, we ignore it */ | ||
| 60 | + xstream_rd_u16_le(ls, minor_ver); | ||
| 61 | + xstream_rd_u32_le(ls, g_clientID); | ||
| 62 | |||
| 63 | - g_client_rdp_version = minor_ver; | ||
| 64 | + g_client_rdp_version = minor_ver; | ||
| 65 | |||
| 66 | - switch (minor_ver) | ||
| 67 | - { | ||
| 68 | - case RDP_CLIENT_50: | ||
| 69 | - break; | ||
| 70 | + switch (minor_ver) | ||
| 71 | + { | ||
| 72 | + case RDP_CLIENT_50: | ||
| 73 | + break; | ||
| 74 | |||
| 75 | - case RDP_CLIENT_51: | ||
| 76 | - break; | ||
| 77 | + case RDP_CLIENT_51: | ||
| 78 | + break; | ||
| 79 | |||
| 80 | - case RDP_CLIENT_52: | ||
| 81 | - break; | ||
| 82 | + case RDP_CLIENT_52: | ||
| 83 | + break; | ||
| 84 | |||
| 85 | - case RDP_CLIENT_60_61: | ||
| 86 | - break; | ||
| 87 | + case RDP_CLIENT_60_61: | ||
| 88 | + break; | ||
| 89 | + } | ||
| 90 | + // LK_TODO devredir_send_server_clientID_confirm(); | ||
| 91 | } | ||
| 92 | - // LK_TODO devredir_send_server_clientID_confirm(); | ||
| 93 | break; | ||
| 94 | |||
| 95 | case PAKID_CORE_CLIENT_NAME: | ||
| 96 | @@ -378,19 +390,19 @@ devredir_data_in(struct stream *s, int chan_id, int chan_flags, int length, | ||
| 97 | break; | ||
| 98 | |||
| 99 | case PAKID_CORE_CLIENT_CAPABILITY: | ||
| 100 | - devredir_proc_client_core_cap_resp(ls); | ||
| 101 | + rv = devredir_proc_client_core_cap_resp(ls); | ||
| 102 | break; | ||
| 103 | |||
| 104 | case PAKID_CORE_DEVICELIST_ANNOUNCE: | ||
| 105 | - devredir_proc_client_devlist_announce_req(ls); | ||
| 106 | + rv = devredir_proc_client_devlist_announce_req(ls); | ||
| 107 | break; | ||
| 108 | |||
| 109 | case PAKID_CORE_DEVICELIST_REMOVE: | ||
| 110 | - devredir_proc_client_devlist_remove_req(ls); | ||
| 111 | + rv = devredir_proc_client_devlist_remove_req(ls); | ||
| 112 | break; | ||
| 113 | |||
| 114 | case PAKID_CORE_DEVICE_IOCOMPLETION: | ||
| 115 | - devredir_proc_device_iocompletion(ls); | ||
| 116 | + rv = devredir_proc_device_iocompletion(ls); | ||
| 117 | break; | ||
| 118 | |||
| 119 | default: | ||
| 120 | @@ -727,8 +739,9 @@ devredir_send_drive_dir_request(IRP *irp, tui32 device_id, | ||
| 121 | * @brief process client's response to our core_capability_req() msg | ||
| 122 | * | ||
| 123 | * @param s stream containing client's response | ||
| 124 | + * @return 0 for success, -1 otherwise | ||
| 125 | *****************************************************************************/ | ||
| 126 | -static void | ||
| 127 | +static int | ||
| 128 | devredir_proc_client_core_cap_resp(struct stream *s) | ||
| 129 | { | ||
| 130 | int i; | ||
| 131 | @@ -738,15 +751,31 @@ devredir_proc_client_core_cap_resp(struct stream *s) | ||
| 132 | tui32 cap_version; | ||
| 133 | char *holdp; | ||
| 134 | |||
| 135 | + if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPEFS] DR_CORE_CAPABLITY_RSP")) | ||
| 136 | + { | ||
| 137 | + return -1; | ||
| 138 | + } | ||
| 139 | xstream_rd_u16_le(s, num_caps); | ||
| 140 | xstream_seek(s, 2); /* padding */ | ||
| 141 | |||
| 142 | for (i = 0; i < num_caps; i++) | ||
| 143 | { | ||
| 144 | holdp = s->p; | ||
| 145 | + if (!s_check_rem_and_log(s, 8, "Parsing [MS-RDPEFS] CAPABILITY_HEADER")) | ||
| 146 | + { | ||
| 147 | + return -1; | ||
| 148 | + } | ||
| 149 | xstream_rd_u16_le(s, cap_type); | ||
| 150 | xstream_rd_u16_le(s, cap_len); | ||
| 151 | xstream_rd_u32_le(s, cap_version); | ||
| 152 | + /* Convert the length to a remaining length. Underflow is possible, | ||
| 153 | + * but this is an unsigned type so that's OK */ | ||
| 154 | + cap_len -= (s->p - holdp); | ||
| 155 | + if (cap_len > 0 && | ||
| 156 | + !s_check_rem_and_log(s, cap_len, "Parsing [MS-RDPEFS] CAPABILITY_HEADER length")) | ||
| 157 | + { | ||
| 158 | + return -1; | ||
| 159 | + } | ||
| 160 | |||
| 161 | switch (cap_type) | ||
| 162 | { | ||
| 163 | @@ -779,11 +808,12 @@ devredir_proc_client_core_cap_resp(struct stream *s) | ||
| 164 | scard_init(); | ||
| 165 | break; | ||
| 166 | } | ||
| 167 | - s->p = holdp + cap_len; | ||
| 168 | + xstream_seek(s, cap_len); | ||
| 169 | } | ||
| 170 | + return 0; | ||
| 171 | } | ||
| 172 | |||
| 173 | -static void | ||
| 174 | +static int | ||
| 175 | devredir_proc_client_devlist_announce_req(struct stream *s) | ||
| 176 | { | ||
| 177 | unsigned int i; | ||
| 178 | @@ -795,12 +825,22 @@ devredir_proc_client_devlist_announce_req(struct stream *s) | ||
| 179 | enum NTSTATUS response_status; | ||
| 180 | |||
| 181 | /* get number of devices being announced */ | ||
| 182 | + if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPEFS] DR_CORE_DEVICELIST_ANNOUNCE_REQ")) | ||
| 183 | + { | ||
| 184 | + return -1; | ||
| 185 | + } | ||
| 186 | + | ||
| 187 | xstream_rd_u32_le(s, device_count); | ||
| 188 | |||
| 189 | LOG_DEVEL(LOG_LEVEL_DEBUG, "num of devices announced: %d", device_count); | ||
| 190 | |||
| 191 | for (i = 0; i < device_count; i++) | ||
| 192 | { | ||
| 193 | + if (!s_check_rem_and_log(s, 4 + 4 + 8 + 4, | ||
| 194 | + "Parsing [MS-RDPEFS] DEVICE_ANNOUNCE")) | ||
| 195 | + { | ||
| 196 | + return -1; | ||
| 197 | + } | ||
| 198 | xstream_rd_u32_le(s, device_type); | ||
| 199 | xstream_rd_u32_le(s, g_device_id); | ||
| 200 | /* get preferred DOS name | ||
| 201 | @@ -816,6 +856,12 @@ devredir_proc_client_devlist_announce_req(struct stream *s) | ||
| 202 | |||
| 203 | /* Read the device data length from the stream */ | ||
| 204 | xstream_rd_u32_le(s, device_data_len); | ||
| 205 | + if (device_data_len > 0 && ! | ||
| 206 | + !s_check_rem_and_log(s, device_data_len, | ||
| 207 | + "Parsing [MS-RDPEFS] DEVICE_ANNOUNCE devdata")) | ||
| 208 | + { | ||
| 209 | + return -1; | ||
| 210 | + } | ||
| 211 | |||
| 212 | switch (device_type) | ||
| 213 | { | ||
| 214 | @@ -881,9 +927,11 @@ devredir_proc_client_devlist_announce_req(struct stream *s) | ||
| 215 | devredir_send_server_device_announce_resp(g_device_id, | ||
| 216 | response_status); | ||
| 217 | } | ||
| 218 | + | ||
| 219 | + return 0; | ||
| 220 | } | ||
| 221 | |||
| 222 | -static void | ||
| 223 | +static int | ||
| 224 | devredir_proc_client_devlist_remove_req(struct stream *s) | ||
| 225 | { | ||
| 226 | unsigned int i; | ||
| 227 | @@ -891,7 +939,16 @@ devredir_proc_client_devlist_remove_req(struct stream *s) | ||
| 228 | tui32 device_id; | ||
| 229 | |||
| 230 | /* get number of devices being announced */ | ||
| 231 | + if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPEFS] DR_DEVICELIST_REMOVE")) | ||
| 232 | + { | ||
| 233 | + return -1; | ||
| 234 | + } | ||
| 235 | xstream_rd_u32_le(s, device_count); | ||
| 236 | + if (!s_check_rem_and_log(s, 4 * device_count, | ||
| 237 | + "Parsing [MS-RDPEFS] DR_DEVICELIST_REMOVE list")) | ||
| 238 | + { | ||
| 239 | + return -1; | ||
| 240 | + } | ||
| 241 | |||
| 242 | LOG_DEVEL(LOG_LEVEL_DEBUG, "num of devices removed: %d", device_count); | ||
| 243 | { | ||
| 244 | @@ -901,9 +958,10 @@ devredir_proc_client_devlist_remove_req(struct stream *s) | ||
| 245 | xfuse_delete_share(device_id); | ||
| 246 | } | ||
| 247 | } | ||
| 248 | + return 0; | ||
| 249 | } | ||
| 250 | |||
| 251 | -static void | ||
| 252 | +static int | ||
| 253 | devredir_proc_device_iocompletion(struct stream *s) | ||
| 254 | { | ||
| 255 | IRP *irp = NULL; | ||
| 256 | @@ -914,6 +972,10 @@ devredir_proc_device_iocompletion(struct stream *s) | ||
| 257 | tui32 Length; | ||
| 258 | enum COMPLETION_TYPE comp_type; | ||
| 259 | |||
| 260 | + if (!s_check_rem_and_log(s, 12, "Parsing [MS-RDPEFS] DR_DEVICE_IOCOMPLETION")) | ||
| 261 | + { | ||
| 262 | + return -1; | ||
| 263 | + } | ||
| 264 | xstream_rd_u32_le(s, DeviceId); | ||
| 265 | xstream_rd_u32_le(s, CompletionId); | ||
| 266 | xstream_rd_u32_le(s, IoStatus32); | ||
| 267 | @@ -959,6 +1021,10 @@ devredir_proc_device_iocompletion(struct stream *s) | ||
| 268 | } | ||
| 269 | else | ||
| 270 | { | ||
| 271 | + if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPEFS] DR_CREATE_RSP")) | ||
| 272 | + { | ||
| 273 | + return -1; | ||
| 274 | + } | ||
| 275 | xstream_rd_u32_le(s, irp->FileId); | ||
| 276 | devredir_send_drive_dir_request(irp, DeviceId, | ||
| 277 | 1, irp->pathname); | ||
| 278 | @@ -966,6 +1032,10 @@ devredir_proc_device_iocompletion(struct stream *s) | ||
| 279 | break; | ||
| 280 | |||
| 281 | case CID_CREATE_REQ: | ||
| 282 | + if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPEFS] DR_CREATE_RSP")) | ||
| 283 | + { | ||
| 284 | + return -1; | ||
| 285 | + } | ||
| 286 | xstream_rd_u32_le(s, irp->FileId); | ||
| 287 | |||
| 288 | xfuse_devredir_cb_create_file( | ||
| 289 | @@ -978,6 +1048,10 @@ devredir_proc_device_iocompletion(struct stream *s) | ||
| 290 | break; | ||
| 291 | |||
| 292 | case CID_OPEN_REQ: | ||
| 293 | + if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPEFS] DR_CREATE_RSP")) | ||
| 294 | + { | ||
| 295 | + return -1; | ||
| 296 | + } | ||
| 297 | xstream_rd_u32_le(s, irp->FileId); | ||
| 298 | |||
| 299 | xfuse_devredir_cb_open_file((struct state_open *) irp->fuse_info, | ||
| 300 | @@ -989,7 +1063,15 @@ devredir_proc_device_iocompletion(struct stream *s) | ||
| 301 | break; | ||
| 302 | |||
| 303 | case CID_READ: | ||
| 304 | + if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPEFS] DR_READ_RSP")) | ||
| 305 | + { | ||
| 306 | + return -1; | ||
| 307 | + } | ||
| 308 | xstream_rd_u32_le(s, Length); | ||
| 309 | + if (!s_check_rem_and_log(s, Length, "Parsing [MS-RDPEFS] DR_READ_RSP")) | ||
| 310 | + { | ||
| 311 | + return -1; | ||
| 312 | + } | ||
| 313 | xfuse_devredir_cb_read_file((struct state_read *) irp->fuse_info, | ||
| 314 | IoStatus, | ||
| 315 | s->p, Length); | ||
| 316 | @@ -997,6 +1079,10 @@ devredir_proc_device_iocompletion(struct stream *s) | ||
| 317 | break; | ||
| 318 | |||
| 319 | case CID_WRITE: | ||
| 320 | + if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPEFS] DR_WRITE_RSP")) | ||
| 321 | + { | ||
| 322 | + return -1; | ||
| 323 | + } | ||
| 324 | xstream_rd_u32_le(s, Length); | ||
| 325 | xfuse_devredir_cb_write_file((struct state_write *) irp->fuse_info, | ||
| 326 | IoStatus, | ||
| 327 | @@ -1019,6 +1105,10 @@ devredir_proc_device_iocompletion(struct stream *s) | ||
| 328 | break; | ||
| 329 | |||
| 330 | case CID_RMDIR_OR_FILE: | ||
| 331 | + if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPEFS] DR_CREATE_RSP")) | ||
| 332 | + { | ||
| 333 | + return -1; | ||
| 334 | + } | ||
| 335 | xstream_rd_u32_le(s, irp->FileId); | ||
| 336 | devredir_proc_cid_rmdir_or_file(irp, IoStatus); | ||
| 337 | break; | ||
| 338 | @@ -1028,6 +1118,10 @@ devredir_proc_device_iocompletion(struct stream *s) | ||
| 339 | break; | ||
| 340 | |||
| 341 | case CID_RENAME_FILE: | ||
| 342 | + if (!s_check_rem_and_log(s, 4, "Parsing [MS-RDPEFS] DR_CREATE_RSP")) | ||
| 343 | + { | ||
| 344 | + return -1; | ||
| 345 | + } | ||
| 346 | xstream_rd_u32_le(s, irp->FileId); | ||
| 347 | devredir_proc_cid_rename_file(irp, IoStatus); | ||
| 348 | break; | ||
| 349 | @@ -1051,6 +1145,7 @@ devredir_proc_device_iocompletion(struct stream *s) | ||
| 350 | break; | ||
| 351 | } | ||
| 352 | } | ||
| 353 | + return 0; | ||
| 354 | } | ||
| 355 | |||
| 356 | static void | ||
diff --git a/meta-oe/recipes-support/xrdp/xrdp/CVE-2022-23480-2.patch b/meta-oe/recipes-support/xrdp/xrdp/CVE-2022-23480-2.patch new file mode 100644 index 0000000000..38c444efcf --- /dev/null +++ b/meta-oe/recipes-support/xrdp/xrdp/CVE-2022-23480-2.patch | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | From 191ed3e3fa892c7dc26e142c7af7af546fcce87d Mon Sep 17 00:00:00 2001 | ||
| 2 | From: matt335672 <30179339+matt335672@users.noreply.github.com> | ||
| 3 | Date: Thu, 8 Dec 2022 14:13:48 +0000 | ||
| 4 | Subject: [PATCH] Remove unused g_full_name_for_filesystem | ||
| 5 | |||
| 6 | Not only was this unused, the way it was read could lead to a | ||
| 7 | buffer overflow (CVE-2022-23480) | ||
| 8 | |||
| 9 | CVE: CVE-2022-23480 | ||
| 10 | Upstream-Status: Backport [https://github.com/neutrinolabs/xrdp/commit/191ed3e3fa892c7dc26e142c7af7af546fcce87d] | ||
| 11 | Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com> | ||
| 12 | --- | ||
| 13 | sesman/chansrv/devredir.c | 14 +++++--------- | ||
| 14 | 1 file changed, 5 insertions(+), 9 deletions(-) | ||
| 15 | |||
| 16 | diff --git a/sesman/chansrv/devredir.c b/sesman/chansrv/devredir.c | ||
| 17 | index 7faa9bfc7a..6ce35e34de 100644 | ||
| 18 | --- a/sesman/chansrv/devredir.c | ||
| 19 | +++ b/sesman/chansrv/devredir.c | ||
| 20 | @@ -103,7 +103,6 @@ int g_is_port_redir_supported = 0; | ||
| 21 | int g_is_drive_redir_supported = 0; | ||
| 22 | int g_is_smartcard_redir_supported = 0; | ||
| 23 | int g_drive_redir_version = 1; | ||
| 24 | -char g_full_name_for_filesystem[1024]; | ||
| 25 | tui32 g_completion_id = 1; | ||
| 26 | |||
| 27 | tui32 g_clientID; /* unique client ID - announced by client */ | ||
| 28 | @@ -866,21 +865,18 @@ devredir_proc_client_devlist_announce_req(struct stream *s) | ||
| 29 | switch (device_type) | ||
| 30 | { | ||
| 31 | case RDPDR_DTYP_FILESYSTEM: | ||
| 32 | - /* get device data len */ | ||
| 33 | - if (device_data_len) | ||
| 34 | - { | ||
| 35 | - xstream_rd_string(g_full_name_for_filesystem, s, | ||
| 36 | - device_data_len); | ||
| 37 | - } | ||
| 38 | + /* At present we don't use the full name - see | ||
| 39 | + * [MS-RDPEFS] 2.2.3.1 for details of the contents */ | ||
| 40 | + xstream_skip_u8(s, device_data_len); | ||
| 41 | |||
| 42 | LOG(LOG_LEVEL_INFO, "Detected remote drive '%s'", | ||
| 43 | preferred_dos_name); | ||
| 44 | |||
| 45 | LOG_DEVEL(LOG_LEVEL_DEBUG, | ||
| 46 | "device_type=FILE_SYSTEM device_id=0x%x dosname=%s " | ||
| 47 | - "device_data_len=%d full_name=%s", g_device_id, | ||
| 48 | + "device_data_len=%d", g_device_id, | ||
| 49 | preferred_dos_name, | ||
| 50 | - device_data_len, g_full_name_for_filesystem); | ||
| 51 | + device_data_len); | ||
| 52 | |||
| 53 | response_status = STATUS_SUCCESS; | ||
| 54 | |||
diff --git a/meta-oe/recipes-support/xrdp/xrdp_0.9.20.bb b/meta-oe/recipes-support/xrdp/xrdp_0.9.20.bb index ea895f169e..e50accfe17 100644 --- a/meta-oe/recipes-support/xrdp/xrdp_0.9.20.bb +++ b/meta-oe/recipes-support/xrdp/xrdp_0.9.20.bb | |||
| @@ -20,6 +20,8 @@ SRC_URI = "https://github.com/neutrinolabs/${BPN}/releases/download/v${PV}/${BPN | |||
| 20 | file://CVE-2022-23477.patch \ | 20 | file://CVE-2022-23477.patch \ |
| 21 | file://CVE-2022-23478.patch \ | 21 | file://CVE-2022-23478.patch \ |
| 22 | file://CVE-2022-23479.patch \ | 22 | file://CVE-2022-23479.patch \ |
| 23 | file://CVE-2022-23480-1.patch \ | ||
| 24 | file://CVE-2022-23480-2.patch \ | ||
| 23 | " | 25 | " |
| 24 | 26 | ||
| 25 | SRC_URI[sha256sum] = "db693401da95b71b4d4e4c99aeb569a546dbdbde343f6d3302b0c47653277abb" | 27 | SRC_URI[sha256sum] = "db693401da95b71b4d4e4c99aeb569a546dbdbde343f6d3302b0c47653277abb" |
