[5183] in Moira

home help back first fref pref prev next nref lref last post

mrtest: qy segfaults when given too many arguments [patch]

daemon@ATHENA.MIT.EDU (Anders Kaseorg)
Fri Aug 24 20:06:27 2007

From: Anders Kaseorg <andersk@MIT.EDU>
To: bug-moira@mit.edu
Cc: debathena@mit.edu
Content-Type: multipart/mixed; boundary="=-H/POyzCUGfZIgci7u8Wu"
Date: Fri, 24 Aug 2007 20:05:34 -0400
Message-Id: <1188000334.8330.20.camel@balanced-tree.mit.edu>
Mime-Version: 1.0


--=-H/POyzCUGfZIgci7u8Wu
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

andersk@mint-square:~$ athrun moira mrtest
moira:  c
moira:  qy x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
Segmentation Fault

Attached is a patch to fix this (and display "moira: Too many command
line arguments" instead).

Anders
SIPB Debian-Athena team


--=-H/POyzCUGfZIgci7u8Wu
Content-Disposition: attachment; filename=moira-mrtest-buffer-overflow.patch
Content-Type: text/x-patch; name=moira-mrtest-buffer-overflow.patch; charset=UTF-8
Content-Transfer-Encoding: 7bit

Index: debathena-moira-4.0.0+cvs20070129/clients/mrtest/mrtest.c
===================================================================
--- debathena-moira-4.0.0+cvs20070129.orig/clients/mrtest/mrtest.c	2007-08-24 19:24:21.000000000 -0400
+++ debathena-moira-4.0.0+cvs20070129/clients/mrtest/mrtest.c	2007-08-24 19:28:20.000000000 -0400
@@ -259,8 +259,14 @@
 	  /* skip whitespace */
 	  for (*p++ = '\0'; *p == ' ' || *p == '\t'; p++)
 	    ;
-	  if (*p && *p != '\n')
-	    argv[++argc] = p--;
+	  if (*p && *p != '\n') {
+	    if (++argc >= MAXARGS) {
+	      fprintf(stderr,
+		      "moira: Too many command line arguments\n");
+	      return 0;
+	    }
+	    argv[argc] = p--;
+	  }
 	}
     }
   if (*p == '\n')

--=-H/POyzCUGfZIgci7u8Wu--


home help back first fref pref prev next nref lref last post