[PATCH] cleanup: remove deprecated envp (third argument to main)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



envp is not standardized, and may become invalid when environment variables
are modified.  Since udev never actually uses it, we can simply remove it.

Should anyone miss it in future, they can use the standardized environ
variable - like udev_rules.c does already.

https://www.securecoding.cert.org/confluence/display/seccode/ENV31-C.+Do+not+rely+on+an+environment+pointer+following+an+operation+that+may+invalidate+it

---

Ulterior motive: threaded udevd can't use environment variables directly.
This patch explains why I would import variables from environ, and not envp.

diff --git a/udev/test-udev.c b/udev/test-udev.c
index 484c3c0..53fc0ce 100644
--- a/udev/test-udev.c
+++ b/udev/test-udev.c
@@ -59,7 +59,7 @@ static void asmlinkage sig_handler(int signum)
 	}
 }
 
-int main(int argc, char *argv[], char *envp[])
+int main(int argc, char *argv[])
 {
 	struct sysfs_device *dev;
 	struct udevice *udev;
diff --git a/udev/udev.h b/udev/udev.h
index 455b68e..990ef01 100644
--- a/udev/udev.h
+++ b/udev/udev.h
@@ -172,11 +172,11 @@ extern int unlink_secure(const char *filename);
 extern size_t buf_get_line(const char *buf, size_t buflen, size_t cur);
 
 /* udev commands */
-extern int udevmonitor(int argc, char *argv[], char *envp[]);
-extern int udevinfo(int argc, char *argv[], char *envp[]);
-extern int udevcontrol(int argc, char *argv[], char *envp[]);
-extern int udevtrigger(int argc, char *argv[], char *envp[]);
-extern int udevsettle(int argc, char *argv[], char *envp[]);
-extern int udevtest(int argc, char *argv[], char *envp[]);
+extern int udevmonitor(int argc, char *argv[]);
+extern int udevinfo(int argc, char *argv[]);
+extern int udevcontrol(int argc, char *argv[]);
+extern int udevtrigger(int argc, char *argv[]);
+extern int udevsettle(int argc, char *argv[]);
+extern int udevtest(int argc, char *argv[]);
 
 #endif
diff --git a/udev/udevadm.c b/udev/udevadm.c
index 7adb7c5..cb356c5 100644
--- a/udev/udevadm.c
+++ b/udev/udevadm.c
@@ -49,20 +49,20 @@ void log_message(int priority, const char *format, ...)
 
 struct command {
 	const char *name;
-	int (*cmd)(int argc, char *argv[], char *envp[]);
+	int (*cmd)(int argc, char *argv[]);
 	const char *help;
 	int debug;
 };
 
 static const struct command cmds[];
 
-static int version(int argc, char *argv[], char *envp[])
+static int version(int argc, char *argv[])
 {
 	printf("%s\n", VERSION);
 	return 0;
 }
 
-static int help(int argc, char *argv[], char *envp[])
+static int help(int argc, char *argv[])
 {
 	const struct command *cmd;
 
@@ -118,7 +118,7 @@ static const struct command cmds[] = {
 	{}
 };
 
-int main(int argc, char *argv[], char *envp[])
+int main(int argc, char *argv[])
 {
 	const char *command;
 	const char *pos;
@@ -157,7 +157,7 @@ int main(int argc, char *argv[], char *envp[])
 	for (cmd = cmds; cmd->name != NULL; cmd++) {
 		if (strcmp(cmd->name, command) == 0) {
 			debug = cmd->debug;
-			rc = cmd->cmd(argc, argv, envp);
+			rc = cmd->cmd(argc, argv);
 			goto out;
 		}
 	}
diff --git a/udev/udevcontrol.c b/udev/udevcontrol.c
index a02bfc4..f4830d8 100644
--- a/udev/udevcontrol.c
+++ b/udev/udevcontrol.c
@@ -36,7 +36,7 @@
 static int sock = -1;
 static int udev_log = 0;
 
-int udevcontrol(int argc, char *argv[], char *envp[])
+int udevcontrol(int argc, char *argv[])
 {
 	static struct udevd_ctrl_msg ctrl_msg;
 	struct sockaddr_un saddr;
diff --git a/udev/udevd.c b/udev/udevd.c
index bbe0b6d..5e41ee5 100644
--- a/udev/udevd.c
+++ b/udev/udevd.c
@@ -953,7 +953,7 @@ static void export_initial_seqnum(void)
 	}
 }
 
-int main(int argc, char *argv[], char *envp[])
+int main(int argc, char *argv[])
 {
 	int retval;
 	int fd;
diff --git a/udev/udevinfo.c b/udev/udevinfo.c
index a97f09c..7e6c94e 100644
--- a/udev/udevinfo.c
+++ b/udev/udevinfo.c
@@ -228,7 +228,7 @@ static int stat_device(const char *name, int export, const char *prefix)
 	return 0;
 }
 
-int udevinfo(int argc, char *argv[], char *envp[])
+int udevinfo(int argc, char *argv[])
 {
 	int option;
 	struct udevice *udev;
diff --git a/udev/udevmonitor.c b/udev/udevmonitor.c
index 2430dd3..3b65bca 100644
--- a/udev/udevmonitor.c
+++ b/udev/udevmonitor.c
@@ -123,7 +123,7 @@ static const char *search_key(const char *searchkey, const char *buf, size_t buf
 	return NULL;
 }
 
-int udevmonitor(int argc, char *argv[], char *envp[])
+int udevmonitor(int argc, char *argv[])
 {
 	struct sigaction act;
 	int option;
diff --git a/udev/udevsettle.c b/udev/udevsettle.c
index f00a38b..11277f5 100644
--- a/udev/udevsettle.c
+++ b/udev/udevsettle.c
@@ -67,7 +67,7 @@ static void print_queue(const char *dir)
 	printf("\n\n");
 }
 
-int udevsettle(int argc, char *argv[], char *envp[])
+int udevsettle(int argc, char *argv[])
 {
 	char queuename[PATH_SIZE];
 	char filename[PATH_SIZE];
diff --git a/udev/udevtest.c b/udev/udevtest.c
index 2b43691..019b482 100644
--- a/udev/udevtest.c
+++ b/udev/udevtest.c
@@ -71,7 +71,7 @@ out:
 	return rc;
 }
 
-int udevtest(int argc, char *argv[], char *envp[])
+int udevtest(int argc, char *argv[])
 {
 	int force = 0;
 	const char *action = "add";
diff --git a/udev/udevtrigger.c b/udev/udevtrigger.c
index 19a3dbb..c0bd845 100644
--- a/udev/udevtrigger.c
+++ b/udev/udevtrigger.c
@@ -560,7 +560,7 @@ static void scan_failed(void)
 	}
 }
 
-int udevtrigger(int argc, char *argv[], char *envp[])
+int udevtrigger(int argc, char *argv[])
 {
 	int failed = 0;
 	const char *sockpath = NULL;


--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Linux DVB]     [Asterisk Internet PBX]     [DCCP]     [Netdev]     [X.org]     [Util Linux NG]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux