Contents of /trunk/util-linux/patches/util-linux-2.18-cfdisk-string-len.patch
Parent Directory | Revision Log
Revision 1078 -
(show annotations)
(download)
Tue Aug 17 15:39:36 2010 UTC (14 years, 1 month ago) by niro
File size: 1683 byte(s)
Tue Aug 17 15:39:36 2010 UTC (14 years, 1 month ago) by niro
File size: 1683 byte(s)
patches for 2.18
1 | http://bugs.gentoo.org/328959 |
2 | |
3 | From 54a0fe298b4d6d948cffbd6fbbbe7dbabc9a6bb1 Mon Sep 17 00:00:00 2001 |
4 | From: Karel Zak <kzak@redhat.com> |
5 | Date: Mon, 19 Jul 2010 22:52:58 +0200 |
6 | Subject: [PATCH] cfdisk: get_string not calculating correct limits |
7 | |
8 | Reported-by: James L. Hammons <jlhamm@acm.org> |
9 | Signed-off-by: Karel Zak <kzak@redhat.com> |
10 | --- |
11 | fdisk/cfdisk.c | 11 ++++++++--- |
12 | 1 files changed, 8 insertions(+), 3 deletions(-) |
13 | |
14 | diff --git a/fdisk/cfdisk.c b/fdisk/cfdisk.c |
15 | index 7fa0b19..e7955fe 100644 |
16 | --- a/fdisk/cfdisk.c |
17 | +++ b/fdisk/cfdisk.c |
18 | @@ -421,6 +421,11 @@ fdexit(int ret) { |
19 | exit(ret); |
20 | } |
21 | |
22 | +/* |
23 | + * Note that @len is size of @str buffer. |
24 | + * |
25 | + * Returns number of read bytes (without \0). |
26 | + */ |
27 | static int |
28 | get_string(char *str, int len, char *def) { |
29 | size_t cells = 0, i = 0; |
30 | @@ -472,7 +477,7 @@ get_string(char *str, int len, char *def) { |
31 | break; |
32 | default: |
33 | #if defined(HAVE_LIBNCURSESW) && defined(HAVE_WIDECHAR) |
34 | - if (i < len && iswprint(c)) { |
35 | + if (i + 1 < len && iswprint(c)) { |
36 | wchar_t wc = (wchar_t) c; |
37 | char s[MB_CUR_MAX + 1]; |
38 | int sz = wctomb(s, wc); |
39 | @@ -492,7 +497,7 @@ get_string(char *str, int len, char *def) { |
40 | putchar(BELL); |
41 | } |
42 | #else |
43 | - if (i < len && isprint(c)) { |
44 | + if (i + 1 < len && isprint(c)) { |
45 | mvaddch(y, x + cells, c); |
46 | if (use_def) { |
47 | clrtoeol(); |
48 | @@ -2405,7 +2410,7 @@ change_id(int i) { |
49 | |
50 | sprintf(def, "%02X", new_id); |
51 | mvaddstr(COMMAND_LINE_Y, COMMAND_LINE_X, _("Enter filesystem type: ")); |
52 | - if ((len = get_string(id, 2, def)) <= 0 && len != GS_DEFAULT) |
53 | + if ((len = get_string(id, 3, def)) <= 0 && len != GS_DEFAULT) |
54 | return; |
55 | |
56 | if (len != GS_DEFAULT) { |
57 | -- |
58 | 1.7.1.1 |
59 |