* conf/transp/transp_sockets.c (create_amq_service): Ugly *BSD fix for
authorIon Badulescu <ib42@cs.columbia.edu>
Wed, 23 Apr 2003 03:24:07 +0000 (03:24 +0000)
committerIon Badulescu <ib42@cs.columbia.edu>
Wed, 23 Apr 2003 03:24:07 +0000 (03:24 +0000)
an RPC library DoS issue (original patch from Martin Blapp,
massaged into something more digestable by me)

ChangeLog
conf/transp/transp_sockets.c

index 6928feee3b73e46fee146a4132bd58cb5204315f..f9cadfddaa68a58651286a72be951fe2c4c8c36e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2003-04-22  Ion Badulescu  <ionut@moisil.badula.org>
+
+       * conf/transp/transp_sockets.c (create_amq_service): Ugly *BSD fix for
+       an RPC library DoS issue (original patch from Martin Blapp,
+       massaged into something more digestable by me)
+
 2003-04-13  Erez Zadok  <ezk@agora.fsl.cs.sunysb.edu>
 
        * doc/Makefile.am (DVIPS): use proper options for dvips.
index 48a0b97ab5af0e36050e1ce15a775cb7536cb691..7a4b8016ae7036e651df8e76a98781427dc66223 100644 (file)
@@ -38,7 +38,7 @@
  *
  *      %W% (Berkeley) %G%
  *
- * $Id: transp_sockets.c,v 1.6.2.8 2002/12/27 22:45:00 ezk Exp $
+ * $Id: transp_sockets.c,v 1.6.2.9 2003/04/23 03:24:09 ib42 Exp $
  *
  * Socket specific utilities.
  *      -Erez Zadok <ezk@cs.columbia.edu>
@@ -230,6 +230,21 @@ create_amq_service(int *udp_soAMQp, SVCXPRT **udp_amqpp, int *tcp_soAMQp, SVCXPR
       plog(XLOG_FATAL, "cannot create tcp service for amq: soAMQp=%d", *tcp_soAMQp);
       return 2;
     }
+
+#ifdef SVCSET_CONNMAXREC
+    /*
+     * This is *BSD at its best.
+     * They just had to do things differently than everyone else
+     * so they fixed a library DoS issue by forcing client-side changes...
+     */
+#ifndef RPC_MAXDATASIZE
+#define RPC_MAXDATASIZE 9000
+#endif
+    {
+      int maxrec = RPC_MAXDATASIZE;
+      SVC_CONTROL(*tcp_amqpp, SVCSET_CONNMAXREC, &maxrec);
+    }
+#endif
   }
 
   /* next create UDP service */