logger: fix a problem of losing all argv except first

diff --git a/sysklogd/logger.c b/sysklogd/logger.c
index df5d8ff..6e1debd 100644
--- a/sysklogd/logger.c
+++ b/sysklogd/logger.c
@@ -107,7 +107,7 @@
 	argv += optind;
 	if (!argc) {
 #define strbuf bb_common_bufsiz1
-		while (fgets(strbuf, BUFSIZ, stdin)) {
+		while (fgets(strbuf, COMMON_BUFSIZE, stdin)) {
 			if (strbuf[0]
 			 && NOT_LONE_CHAR(strbuf, '\n')
 			) {
@@ -117,11 +117,11 @@
 		}
 	} else {
 		char *message = NULL;
-		int len = 1; /* for NUL */
+		int len = 0;
 		int pos = 0;
 		do {
 			len += strlen(*argv) + 1;
-			message = xrealloc(message, len);
+			message = xrealloc(message, len + 1);
 			sprintf(message + pos, " %s", *argv),
 			pos = len;
 		} while (*++argv);