* Re: udev segfaults with bad permissions file
2004-09-14 12:53 udev segfaults with bad permissions file Loleslaw
@ 2004-09-14 14:13 ` Kay Sievers
2004-09-14 16:50 ` Greg KH
1 sibling, 0 replies; 3+ messages in thread
From: Kay Sievers @ 2004-09-14 14:13 UTC (permalink / raw)
To: linux-hotplug
[-- Attachment #1: Type: text/plain, Size: 638 bytes --]
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.
Thanks,
Kay
[-- Attachment #2: udev-whitespace-bug-01.patch --]
[-- Type: text/plain, Size: 2202 bytes --]
===== namedev_parse.c 1.35 vs edited =====
--- 1.35/namedev_parse.c 2004-09-05 19:26:25 +02:00
+++ edited/namedev_parse.c 2004-09-14 15:44:45 +02:00
@@ -182,15 +182,13 @@ static int namedev_parse_rules(char *fil
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(cha
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)
===== udev_config.c 1.20 vs edited =====
--- 1.20/udev_config.c 2004-09-05 19:26:57 +02:00
+++ edited/udev_config.c 2004-09-14 16:02:10 +02:00
@@ -161,15 +161,13 @@ static int parse_config_file(void)
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)
===== test/udev-test.pl 1.56 vs edited =====
--- 1.56/test/udev-test.pl 2004-06-04 23:01:52 +02:00
+++ edited/test/udev-test.pl 2004-09-14 16:00:29 +02:00
@@ -161,6 +161,22 @@ KERNEL="ttyUSB0", NAME="visor"
EOF
},
{
+ desc => "Handle whitespace only lines (and replace kernel name)",
+ subsys => "tty",
+ devpath => "/class/tty/ttyUSB0",
+ exp_name => "whitespace" ,
+ conf => <<EOF
+
+
+
+ # this is a comment with whitespace before the comment
+KERNEL="ttyUSB0", NAME="whitespace"
+
+
+
+EOF
+ },
+ {
desc => "Handle empty lines in config file (and replace kernel name)",
subsys => "tty",
devpath => "/class/tty/ttyUSB0",
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: udev segfaults with bad permissions file
2004-09-14 12:53 udev segfaults with bad permissions file Loleslaw
2004-09-14 14:13 ` Kay Sievers
@ 2004-09-14 16:50 ` Greg KH
1 sibling, 0 replies; 3+ messages in thread
From: Greg KH @ 2004-09-14 16:50 UTC (permalink / raw)
To: linux-hotplug
On Tue, Sep 14, 2004 at 04:13:25PM +0200, Kay Sievers wrote:
> 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.
Applied, thanks.
greg k-h
-------------------------------------------------------
This SF.Net email is sponsored by: thawte's Crypto Challenge Vl
Crack the code and win a Sony DCRHC40 MiniDV Digital Handycam
Camcorder. More prizes in the weekly Lunch Hour Challenge.
Sign up NOW http://ad.doubleclick.net/clk;10740251;10262165;m
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
^ permalink raw reply [flat|nested] 3+ messages in thread