diff --git a/readlink.c b/readlink.c
index 6df74e9..22e8cfd 100644
--- a/readlink.c
+++ b/readlink.c
@@ -42,8 +42,10 @@ main(int argc, char *argv[])
 		if (realpath(argv[0], buf) == NULL)
 			exit(1);
 	} else {
-		if (readlink(argv[0], buf, sizeof(buf)) < 0)
+		ssize_t n;
+		if ((n = readlink(argv[0], buf, sizeof(buf) - 1)) < 0)
 			exit(1);
+		buf[n] = '\0';
 	}
 
 	printf("%s", buf);
