linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kay Sievers <kay.sievers@vrfy.org>
To: linux-hotplug@vger.kernel.org
Subject: Re: udev segfaults with bad permissions file
Date: Tue, 14 Sep 2004 14:13:25 +0000	[thread overview]
Message-ID: <20040914141325.GA17998@vrfy.org> (raw)
In-Reply-To: <200409141453.12856.>

[-- 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",

  reply	other threads:[~2004-09-14 14:13 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-14 12:53 udev segfaults with bad permissions file Loleslaw
2004-09-14 14:13 ` Kay Sievers [this message]
2004-09-14 16:50 ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20040914141325.GA17998@vrfy.org \
    --to=kay.sievers@vrfy.org \
    --cc=linux-hotplug@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).