From 1d775aa260bdc20c2e8e618691eabb193d496e05 Mon Sep 17 00:00:00 2001 From: Vaclav Dolezal Date: Mon, 28 Aug 2017 13:20:34 +0200 Subject: fdisk: fix copy from readline and whitespace stripping Bug fixed: --- 678: fdisk: ASK: asking for number ['Partition number', <1,4>, default=1, range: 1-4] 678: fdisk: ASK: asking for user replay [interactive] Partition number (1-4, default 1): 12345 678: fdisk: ASK: user's reply: >>>12345<<< Value out of range. 678: fdisk: ASK: asking for user replay [interactive] Partition number (1-4, default 1): 1 678: fdisk: ASK: user's reply: >>>12345<<< Value out of range. 678: fdisk: ASK: asking for user replay [interactive] Partition number (1-4, default 1): 678: fdisk: ASK: user's reply: >>>22345<<< Value out of range. --- Signed-off-by: Vaclav Dolezal --- disk-utils/fdisk.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'disk-utils/fdisk.c') diff --git a/disk-utils/fdisk.c b/disk-utils/fdisk.c index 261d884be..be8f00edc 100644 --- a/disk-utils/fdisk.c +++ b/disk-utils/fdisk.c @@ -140,10 +140,10 @@ int get_user_reply(const char *prompt, char *buf, size_t bufsz) if (!reply_running && reply_line) { sz = strlen(reply_line); if (sz == 0) - buf[0] = '\n'; + buf[sz++] = '\n'; else memcpy(buf, reply_line, min(sz, bufsz)); - buf[bufsz - 1] = '\0'; + buf[min(sz, bufsz - 1)] = '\0'; free(reply_line); reply_line = NULL; } @@ -168,7 +168,7 @@ int get_user_reply(const char *prompt, char *buf, size_t bufsz) for (p = buf; *p && !isgraph(*p); p++); /* get first non-blank */ if (p > buf) - memmove(buf, p, p - buf); /* remove blank space */ + memmove(buf, p, strlen(p) + 1); /* remove blank space */ sz = strlen(buf); if (sz && *(buf + sz - 1) == '\n') *(buf + sz - 1) = '\0'; -- cgit v1.2.3-55-g7522