summaryrefslogtreecommitdiff
path: root/namedev_parse.c
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-09-14 17:45:48 -0700
committerGreg KH <gregkh@suse.de>2005-04-26 21:37:01 -0700
commit3db7fa27027110fde92a1b6061fab434fe708e9f (patch)
treec7023de1613b738ba77b4780a7459e00b3f06378 /namedev_parse.c
parentcb5203fb48d2c28f264b175aa560f08d6e368320 (diff)
[PATCH] fix udev segfaults with bad permissions file
On Tue, Sep 14, 2004 at 02:53:12PM +0200, Loleslaw wrote: > Hi, > Since I started using udev-031 on my gentoo udevstart would just segfault > (udev-030 worked). As it turned out I had a file in /etc/udev/permissions.d > with a single space in one line. I've cleaned the file and it works all > right, but I thought you could be interested. > I've traced it to function namedev_init_permissions in namedev_parse.c > I don't know C well enough to suggest a patch. Yeah, thanks for pointing that out. It only happens if the file ends with whitespace-only lines. Here is a fix and a test for udev-test.pl to cover that case.
Diffstat (limited to 'namedev_parse.c')
-rw-r--r--namedev_parse.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/namedev_parse.c b/namedev_parse.c
index 4bb1a97ce9..7e37833202 100644
--- a/namedev_parse.c
+++ b/namedev_parse.c
@@ -182,15 +182,13 @@ static int namedev_parse_rules(char *filename)
continue;
}
- /* empty line? */
- if (bufline[0] == '\0' || bufline[0] == '\n')
- continue;
-
/* eat the whitespace */
- while (isspace(bufline[0])) {
+ while ((count > 0) && isspace(bufline[0])) {
bufline++;
count--;
}
+ if (count == 0)
+ continue;
/* see if this is a comment */
if (bufline[0] == COMMENT_CHARACTER)
@@ -381,15 +379,13 @@ static int namedev_parse_permissions(char *filename)
continue;
}
- /* empty line? */
- if (bufline[0] == '\0' || bufline[0] == '\n')
- continue;
-
/* eat the whitespace */
- while (isspace(bufline[0])) {
+ while ((count > 0) && isspace(bufline[0])) {
bufline++;
count--;
}
+ if (count == 0)
+ continue;
/* see if this is a comment */
if (bufline[0] == COMMENT_CHARACTER)