X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev%2Fudev_rules.c;h=a56ed4e1769166819d798ed00d4a6f8436aa8e13;hb=ecc9ec579feb4b7cc86bcf7caed3cb841faf3c9e;hp=ce1f66ecd6364e6b7621a8a9cba7c7672f9c5d35;hpb=3b738db6eb3bf9221509f3dec8044c19bb48cb48;p=elogind.git diff --git a/udev/udev_rules.c b/udev/udev_rules.c index ce1f66ecd..a56ed4e17 100644 --- a/udev/udev_rules.c +++ b/udev/udev_rules.c @@ -1,20 +1,19 @@ /* * Copyright (C) 2003 Greg Kroah-Hartman - * Copyright (C) 2003-2006 Kay Sievers + * Copyright (C) 2003-2008 Kay Sievers * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation version 2 of the License. + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ #include @@ -35,7 +34,6 @@ #include "udev.h" #include "udev_rules.h" -#include "udev_selinux.h" extern char **environ; @@ -486,10 +484,10 @@ static int pass_env_to_socket(struct udev *udev, const char *sockpath, const cha saddrlen = offsetof(struct sockaddr_un, sun_path) + 1 + strlen(&saddr.sun_path[1]); } - bufpos = snprintf(buf, sizeof(buf)-1, "%s@%s", action, devpath); + bufpos = snprintf(buf, sizeof(buf), "%s@%s", action, devpath); bufpos++; - for (i = 0; environ[i] != NULL && bufpos < (sizeof(buf)-1); i++) { - bufpos += strlcpy(&buf[bufpos], environ[i], sizeof(buf) - bufpos-1); + for (i = 0; environ[i] != NULL && bufpos < (sizeof(buf)); i++) { + bufpos += strlcpy(&buf[bufpos], environ[i], sizeof(buf) - bufpos); bufpos++; } if (bufpos > sizeof(buf)) @@ -865,7 +863,7 @@ found: size = sizeof(temp2)-1; while (size > 0 && isspace(temp2[size-1])) temp2[--size] = '\0'; - count = replace_chars(temp2, ALLOWED_CHARS_INPUT); + count = util_replace_chars(temp2, ALLOWED_CHARS_INPUT); if (count > 0) info(udevice->udev, "%i character(s) replaced\n" , count); strlcat(string, temp2, maxsize); @@ -923,7 +921,7 @@ found: strlcat(symlinks, name_loop->name, sizeof(symlinks)); strlcat(symlinks, " ", sizeof(symlinks)); } - remove_trailing_chars(symlinks, ' '); + util_remove_trailing_chars(symlinks, ' '); strlcat(string, symlinks, maxsize); } break; @@ -1242,10 +1240,10 @@ try_parent: int count; dbg(udevice->udev, "PROGRAM matches\n"); - remove_trailing_chars(result, '\n'); + util_remove_trailing_chars(result, '\n'); if (rule->string_escape == ESCAPE_UNSET || rule->string_escape == ESCAPE_REPLACE) { - count = replace_chars(result, ALLOWED_CHARS_INPUT); + count = util_replace_chars(result, ALLOWED_CHARS_INPUT); if (count > 0) info(udevice->udev, "%i character(s) replaced\n" , count); } @@ -1368,6 +1366,7 @@ nomatch: int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice) { + struct udev_rules_iter iter; struct udev_rule *rule; int name_set = 0; @@ -1375,9 +1374,9 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice) dbg(udevice->udev, "udevice->dev->kernel='%s'\n", udevice->dev->kernel); /* look for a matching rule to apply */ - udev_rules_iter_init(rules); + udev_rules_iter_init(&iter, rules); while (1) { - rule = udev_rules_iter_next(rules); + rule = udev_rules_iter_next(&iter); if (rule == NULL) break; @@ -1462,7 +1461,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice) udev_rules_apply_format(udevice, temp, sizeof(temp)); if (rule->string_escape == ESCAPE_UNSET || rule->string_escape == ESCAPE_REPLACE) { - count = replace_chars(temp, ALLOWED_CHARS_FILE " "); + count = util_replace_chars(temp, ALLOWED_CHARS_FILE " "); if (count > 0) info(udevice->udev, "%i character(s) replaced\n" , count); } @@ -1497,7 +1496,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice) udev_rules_apply_format(udevice, udevice->name, sizeof(udevice->name)); if (rule->string_escape == ESCAPE_UNSET || rule->string_escape == ESCAPE_REPLACE) { - count = replace_chars(udevice->name, ALLOWED_CHARS_FILE); + count = util_replace_chars(udevice->name, ALLOWED_CHARS_FILE); if (count > 0) info(udevice->udev, "%i character(s) replaced\n", count); } @@ -1530,7 +1529,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice) if (rule->goto_label.operation != KEY_OP_UNSET) { dbg(udevice->udev, "moving forward to label '%s'\n", key_val(rule, &rule->goto_label)); - udev_rules_iter_label(rules, key_val(rule, &rule->goto_label)); + udev_rules_iter_label(&iter, key_val(rule, &rule->goto_label)); } } } @@ -1551,14 +1550,15 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice) int udev_rules_get_run(struct udev_rules *rules, struct udevice *udevice) { + struct udev_rules_iter iter; struct udev_rule *rule; dbg(udevice->udev, "udevice->kernel='%s'\n", udevice->dev->kernel); /* look for a matching rule to apply */ - udev_rules_iter_init(rules); + udev_rules_iter_init(&iter, rules); while (1) { - rule = udev_rules_iter_next(rules); + rule = udev_rules_iter_next(&iter); if (rule == NULL) break; @@ -1609,7 +1609,7 @@ int udev_rules_get_run(struct udev_rules *rules, struct udevice *udevice) if (rule->goto_label.operation != KEY_OP_UNSET) { dbg(udevice->udev, "moving forward to label '%s'\n", key_val(rule, &rule->goto_label)); - udev_rules_iter_label(rules, key_val(rule, &rule->goto_label)); + udev_rules_iter_label(&iter, key_val(rule, &rule->goto_label)); } } }