-- Leo's gemini proxy
-- Connecting to git.thebackupbox.net:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini
repo: urcd action: commit revision: path_from: revision_from: 0630b55b38eb5262aadce87b43a76b8ca735a8a2: path_to: revision_to:
commit 0630b55b38eb5262aadce87b43a76b8ca735a8a2 Author: root <root@ip-10-156-95-218.(none)> Date: Thu Aug 8 18:42:19 2013 +0000 [urc][security] randomize schedule during low latency diff --git a/src/urcd.pyx b/src/urcd.pyx
--- a/src/urcd.pyx +++ b/src/urcd.pyx @@ -389,9 +389,10 @@ while 1: ### ERR_UKNOWNCOMMAND ### else: try_write(wr,':'+serv+' 421 '+str({str():buffer})[6:-2].replace("\\'","'").replace('\\\\','\\')+'\n') - while server_revents((choice(bytes)[1]<<10)*0.01) and not client_revents(0): ### may reduce some side channels ### + while server_revents(0) and not client_revents(0): ### may reduce some side channels ### buffer = try_read(sd,2+16+8+1024)[2+16+8:].split('\n',1)[0] if URCHUB else try_read(sd,1024).split('\n',1)[0] if not buffer: continue + server_revents((choice(bytes)[1]<<10)*0.01) buffer = re_BUFFER_CTCP_DCC('',buffer) + '\x01' if '\x01ACTION ' in buffer.upper() else buffer.replace('\x01','') if not COLOUR: buffer = re_BUFFER_COLOUR('',buffer) if not UNICODE: diff --git a/src/urchubstream.c b/src/urchubstream.c
--- a/src/urchubstream.c +++ b/src/urchubstream.c @@ -34,6 +34,10 @@ main(int argc, char **argv) exit(64); } + int devurandomfd = open("/dev/urandom",O_RDONLY); + if (devurandomfd<0) exit(255); + unsigned char byte[1]; + int rd = 0, wr = 1, sd = -1; if (getenv("TCPCLIENT")){ rd = 6; wr = 7; } @@ -95,16 +99,18 @@ main(int argc, char **argv) i = read(rd,buffer+n,l-n); if (i<1) sock_close(9); n += i; - } if (sendto(sd,buffer,n,0,(struct sockaddr *)&hub,sizeof(hub))<0) usleep(250000); + } if (sendto(sd,buffer,n,0,(struct sockaddr *)&hub,sizeof(hub))<0) usleep(262144); } - while (poll(fds+1,1,0)) + while ((poll(fds,2,0)) && (!fds[0].revents)) { n = read(sd,buffer,2+16+8+1024); if (n<1) sock_close(10); + if (read(devurandomfd,byte,1)<1) sock_close(11); + poll(fds+1,1,byte[0]<<3); if (n!=2+16+8+buffer[0]*256+buffer[1]) continue; - if (write(wr,buffer,n)<0) sock_close(11); + if (write(wr,buffer,n)<0) sock_close(12); } }
-----END OF PAGE-----
-- Response ended
-- Page fetched on Sun Jun 2 17:30:35 2024