for (i = 0; msg->envp[i]; i++)
putenv(msg->envp[i]);
- udev = udev_device_init();
+ udev = udev_device_init(NULL);
if (udev == NULL)
return -1;
strlcpy(udev->action, msg->action, sizeof(udev->action));
{
char filename[PATH_SIZE];
char filename_failed[PATH_SIZE];
- size_t start, end, i;
+ size_t start;
struct udevd_uevent_msg *loop_msg;
int fd;
/* add location of queue files */
strlcpy(filename, udev_root, sizeof(filename));
strlcat(filename, "/", sizeof(filename));
- start = strlcat(filename, EVENT_QUEUE_DIR, sizeof(filename));
- end = strlcat(filename, msg->devpath, sizeof(filename));
- if (end > sizeof(filename))
- end = sizeof(filename);
-
- /* replace '/' to transform path into a filename */
- for (i = start+1; i < end; i++)
- if (filename[i] == '/')
- filename[i] = PATH_TO_NAME_CHAR;
+ start = strlcat(filename, EVENT_QUEUE_DIR"/", sizeof(filename));
+ strlcat(filename, msg->devpath, sizeof(filename));
+ path_encode(&filename[start], sizeof(filename) - start);
/* add location of failed files */
strlcpy(filename_failed, udev_root, sizeof(filename_failed));
strlcat(filename_failed, "/", sizeof(filename_failed));
- start = strlcat(filename_failed, EVENT_FAILED_DIR, sizeof(filename_failed));
- end = strlcat(filename_failed, msg->devpath, sizeof(filename_failed));
- if (end > sizeof(filename_failed))
- end = sizeof(filename_failed);
-
- /* replace '/' to transform path into a filename */
- for (i = start+1; i < end; i++)
- if (filename_failed[i] == '/')
- filename_failed[i] = PATH_TO_NAME_CHAR;
+ start = strlcat(filename_failed, EVENT_FAILED_DIR"/", sizeof(filename_failed));
+ strlcat(filename_failed, msg->devpath, sizeof(filename_failed));
+ path_encode(&filename_failed[start], sizeof(filename) - start);
switch (state) {
case EVENT_QUEUED:
static int cpu_count(void)
{
int f;
- char buf[32768];
+ char buf[65536];
int len;
const char *pos;
int count = 0;
exit:
udev_rules_cleanup(&rules);
sysfs_cleanup();
+ selinux_exit();
if (signal_pipe[READ_END] >= 0)
close(signal_pipe[READ_END]);