Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
security:tls:staging
openssh
fix-x11-regression-bsc1229449.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File fix-x11-regression-bsc1229449.patch of Package openssh
Index: openssh-9.9p1/clientloop.c =================================================================== --- openssh-9.9p1.orig/clientloop.c +++ openssh-9.9p1/clientloop.c @@ -663,9 +663,10 @@ obfuscate_keystroke_timing(struct ssh *s if (just_started) return 1; - /* Don't arm output fd for poll until the timing interval has elapsed */ + /* Don't arm output fd for poll until the timing interval has elapsed... */ if (timespeccmp(&now, &next_interval, <)) - return 0; + /* ...unless there's x11 communicattion happening */ + return x11_channel_used_recently(ssh); /* Calculate number of intervals missed since the last check */ n = (now.tv_sec - next_interval.tv_sec) * 1000LL * 1000 * 1000; Index: openssh-9.9p1/channels.c =================================================================== --- openssh-9.9p1.orig/channels.c +++ openssh-9.9p1/channels.c @@ -5352,3 +5352,22 @@ x11_request_forwarding_with_spoofing(str fatal_fr(r, "send x11-req"); free(new_data); } + +/* + * Returns whether an x11 channel was used recently (less than a second ago) + */ +int +x11_channel_used_recently(struct ssh *ssh) { + u_int i; + Channel *c; + time_t lastused = 0; + + for (i = 0; i < ssh->chanctxt->channels_alloc; i++) { + c = ssh->chanctxt->channels[i]; + if (c == NULL || c->ctype == NULL || c->lastused == 0 || + strcmp(c->ctype, "x11-connection")) + continue; + lastused = c->lastused; + } + return (lastused != 0 && monotime() < lastused + 1); +} Index: openssh-9.9p1/channels.h =================================================================== --- openssh-9.9p1.orig/channels.h +++ openssh-9.9p1/channels.h @@ -382,6 +382,7 @@ int x11_connect_display(struct ssh *); int x11_create_display_inet(struct ssh *, int, int, int, u_int *, int **); void x11_request_forwarding_with_spoofing(struct ssh *, int, const char *, const char *, const char *, int); +int x11_channel_used_recently(struct ssh *ssh); /* channel close */
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor