Репозиторий ALT Linux backports/2.4
Последнее обновление: 9 июля 2008 | Пакетов: 497 | Посещений: 1574669
 поиск   регистрация   авторизация 
 
Группа :: Система/Ядро и оборудование
Пакет: modutils

 Главная   Изменения   Спек   Патчи   Загрузить   Bugs and FR 

Патч: module-init-tools-3.1-alt-depmod-check-aliases.patch


--- module-init-tools/depmod.c.alt-depmod-check-aliases	2005-01-15 21:27:15 +0300
+++ module-init-tools/depmod.c	2005-01-15 21:28:28 +0300
@@ -637,6 +637,16 @@ static const char *next_string(const cha
 	return string;
 }
 
+static int good_alias(struct module *mod, const char *alias)
+{
+	if (strpbrk(alias, " #\t\n")) {
+		warn("Module %s contains invalid alias \"%s\"\n",
+		     mod->pathname, alias);
+		return 0;
+	}
+	return 1;
+}
+
 static void output_aliases(struct module *modules, FILE *out)
 {
 	struct module *i;
@@ -652,16 +662,20 @@ static void output_aliases(struct module
 		/* Grab from old-style .modalias section. */
 		for (p = i->modalias.data, size = i->modalias.size;
 		     p;
-		     p = next_string(p, &size))
-			fprintf(out, "alias %s %s\n", p, modname);
+		     p = next_string(p, &size)) {
+			if (good_alias(i, p))
+				fprintf(out, "alias %s %s\n", p, modname);
+		}
 
 		/* Grab form new-style .modinfo section. */
 		for (p = i->modinfo.data, size = i->modinfo.size;
 		     p;
 		     p = next_string(p, &size)) {
-			if (strncmp(p, "alias=", strlen("alias=")) == 0)
-				fprintf(out, "alias %s %s\n",
-					p + strlen("alias="), modname);
+			if (strncmp(p, "alias=", strlen("alias=")) == 0) {
+				if (good_alias(i, p))
+					fprintf(out, "alias %s %s\n",
+						p + strlen("alias="), modname);
+			}
 		}
 	}
 }
 
design & coding: Vladimir Lettiev aka crux © 2004-2005