Skip to content

Commit

Permalink
upstream: Prevent integer overflow in x11 port handling. These are
Browse files Browse the repository at this point in the history
theoretically possible if the admin misconfigures X11DisplayOffset or the
user misconfigures their own $DISPLAY, but don't happen in normal operation.
From Suhov Roman via bz#3730, ok djm@

OpenBSD-Commit-ID: e9e3860f1a19b862ccf07dc8ecbe8f1e1034f4ed
  • Loading branch information
daztucker committed Dec 5, 2024
1 parent 8c9ee04 commit 9998c93
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions channels.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* $OpenBSD: channels.c,v 1.440 2024/10/13 22:20:06 djm Exp $ */
/* $OpenBSD: channels.c,v 1.441 2024/12/05 06:47:00 dtucker Exp $ */
/*
* Author: Tatu Ylonen <[email protected]>
* Copyright (c) 1995 Tatu Ylonen <[email protected]>, Espoo, Finland
Expand Down Expand Up @@ -4998,13 +4998,13 @@ x11_create_display_inet(struct ssh *ssh, int x11_display_offset,
u_int *display_numberp, int **chanids)
{
Channel *nc = NULL;
int display_number, sock;
u_short port;
int display_number, sock, port;
struct addrinfo hints, *ai, *aitop;
char strport[NI_MAXSERV];
int gaierr, n, num_socks = 0, socks[NUM_SOCKS];

if (chanids == NULL)
if (chanids == NULL || x11_display_offset < 0 ||
x11_display_offset > UINT16_MAX - 6000 - MAX_DISPLAYS)
return -1;

for (display_number = x11_display_offset;
Expand Down Expand Up @@ -5226,7 +5226,8 @@ x11_connect_display(struct ssh *ssh)
* buf now contains the host name. But first we parse the
* display number.
*/
if (sscanf(cp + 1, "%u", &display_number) != 1) {
if (sscanf(cp + 1, "%u", &display_number) != 1 ||
display_number > UINT16_MAX - 6000) {
error("Could not parse display number from DISPLAY: %.100s",
display);
return -1;
Expand Down

0 comments on commit 9998c93

Please sign in to comment.