-- 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: 220d846e2424b5880d791aa86f803bf07dcd2ff7:
path_to:
revision_to:

git.thebackupbox.net

urcd

git://git.thebackupbox.net/urcd

commit 220d846e2424b5880d791aa86f803bf07dcd2ff7
Author: root <root@d3v11.ano>
Date:   Sat Jan 5 22:59:01 2013 +0000

    [urcd, urc2sd] no DoS through encoding expansion (EMSGSIZE)

diff --git a/src/urc2sd.pyx b/src/urc2sd.pyx

index a970b9235fe49c3ec288eb791e4a5f8dc85db20d..

index ..d63f1af72282ae63f909a7348722c4adef9e3655 100644

--- a/src/urc2sd.pyx
+++ b/src/urc2sd.pyx
@@ -167,13 +167,16 @@ while 1:

     if re.search('^:['+RE+']+!['+RE+']+@['+RE+'.]+ ((PRIVMSG)|(NOTICE)|(TOPIC)) #['+RE+']+ :.*$',buffer.upper()):

-      src = buffer[1:].split('!',1)[0] + '> '
-      cmd = buffer.split(' ',3)[1].upper()
       dst = buffer.split(' ',3)[2].lower()
-      msg = buffer.split(':',2)[2]

       if dst in channels:
-        os.write(wr,cmd+' '+dst+' :'+src+msg+'\n')
-      continue
+
+        src    = buffer[1:].split('!',1)[0] + '> '
+        cmd    = buffer.split(' ',3)[1].upper()
+        msg    = buffer.split(':',2)[2]
+        buffer = cmd + ' ' + dst + ' :' + src + msg + '\n'
+
+        if len(buffer)<=1024:
+          os.write(wr,buffer)

 sock_close(0,0)
diff --git a/src/urcd.pyx b/src/urcd.pyx

index 9b5de3f5128422c5e21733776917e26ba75fdf41..

index ..82c5d672b589cdcd9c3859af4c92a1ca3ab489a8 100644

--- a/src/urcd.pyx
+++ b/src/urcd.pyx
@@ -256,7 +256,7 @@ while 1:
     buffer = re.sub('[\x02\x0f]','',buffer)
     buffer = re.sub('\x01(ACTION )?','*',buffer)
     buffer = re.sub('\x03[0-9][0-9]?(,[0-9][0-9]?)?','',buffer)
-    buffer = str({str():buffer})[6:][:len(str({str():buffer})[6:])-4]+'\n'
+    buffer = str({str():buffer})[6:][:len(str({str():buffer})[6:])-4] + '\n'
     buffer = buffer.replace("\\'","'")
     buffer = buffer.replace('\\\\','\\')

@@ -264,8 +264,7 @@ while 1:

       dst = buffer.split(' ',3)[2].lower()

-      if dst == nick.lower() or dst in channels:
+      if (dst == nick.lower() or dst in channels) and len(buffer)<=1024:
         os.write(wr,buffer)
-      continue

 sock_close(0,0)

-----END OF PAGE-----

-- Response ended

-- Page fetched on Sun Jun 2 15:07:23 2024