diff -Naur a/toys/other/mountpoint.c b/toys/other/mountpoint.c
--- a/toys/other/mountpoint.c	2014-10-02 18:23:27.000000000 +0530
+++ b/toys/other/mountpoint.c	2014-10-06 17:15:18.515861460 +0530
@@ -22,33 +22,31 @@
 void mountpoint_main(void)
 {
   struct stat st1, st2;
-  int res = 0;
-  int quiet = toys.optflags & FLAG_q;
-  toys.exitval = 1; // be pessimistic
-  strncpy(toybuf, toys.optargs[0], sizeof(toybuf));
-  if (((toys.optflags & FLAG_x) && lstat(toybuf, &st1)) || stat(toybuf, &st1))
-    perror_exit("%s", toybuf);
+  int res, quiet = toys.optflags & FLAG_q;
+  char *buf = *toys.optargs;
+
+  if (((toys.optflags & FLAG_x) && lstat(buf, &st1)) || stat(buf, &st1))
+    perror_exit("%s", buf);
 
   if (toys.optflags & FLAG_x){
-    if (S_ISBLK(st1.st_mode)) {
-      if (!quiet) printf("%u:%u\n", major(st1.st_rdev), minor(st1.st_rdev));
-      toys.exitval = 0;
-      return;
-    }
-    if (!quiet) printf("%s: not a block device\n", toybuf);
+    if (S_ISBLK(st1.st_mode) && !quiet)
+      printf("%u:%u\n", major(st1.st_rdev), minor(st1.st_rdev));
+    else if (!quiet) error_msg("%s: not a block device", buf);
     return;
   }
 
   if(!S_ISDIR(st1.st_mode)){
-    if (!quiet) printf("%s: not a directory\n", toybuf);
+    if (!quiet) error_msg("%s: not a directory", buf);
     return;
   }
-  strncat(toybuf, "/..", sizeof(toybuf));
-  stat(toybuf, &st2);
+  buf = xmprintf("%s/..", buf);
+  if (stat(buf, &st2)) perror_exit("%s", buf);
+
   res = (st1.st_dev != st2.st_dev) ||
     (st1.st_dev == st2.st_dev && st1.st_ino == st2.st_ino);
-  if (!quiet) printf("%s is %sa mountpoint\n", toys.optargs[0], res ? "" : "not ");
+  if (!quiet) printf("%s is %sa mountpoint\n", *toys.optargs, res ? "" : "not ");
   if (toys.optflags & FLAG_d)
     printf("%u:%u\n", major(st1.st_dev), minor(st1.st_dev));
-  toys.exitval = res ? 0 : 1;
+  toys.exitval = !res;
+  if (CFG_TOYBOX_FREE) free(buf);
 }
