diff -rup run-1.1.12/src/run.c /tmp/run-1.1.12/src/run.c
--- old/run-1.1.12/src/run.c	2010-12-31 13:43:05.770732300 -0500
+++ run-1.1.12/src/run.c	2010-12-31 13:41:13.093732300 -0500
@@ -810,10 +810,16 @@ void process_execname(char *exec, const
       {
          if ((stbuf.st_mode & S_IFLNK) == S_IFLNK)
          {
-	    if (readlink(sym_link_name, real_name, sizeof(real_name)) == -1)
+	    ssize_t len;
+
+	    if ((len = readlink(sym_link_name, real_name, sizeof(real_name))) == -1)
                error("problem reading symbolic link for %s",exec_tmp);
             else
             {
+		if (len < sizeof(real_name))
+		    real_name[len] = '\0';
+		else
+		    error("symlink pointed to by %s is too long", sym_link_name);
                 /* if realname starts with '/' it's a rootpath */
                 if (real_name[0] == '/')
                     strcpy(exec_tmp2,real_name);

