mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-06 13:17:44 +03:00
commit
b23f2b72bf
@ -782,7 +782,7 @@ static void log_assert(
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
DISABLE_WARNING_FORMAT_NONLITERAL;
|
DISABLE_WARNING_FORMAT_NONLITERAL;
|
||||||
xsprintf(buffer, format, text, file, line, func);
|
snprintf(buffer, sizeof buffer, format, text, file, line, func);
|
||||||
REENABLE_WARNING;
|
REENABLE_WARNING;
|
||||||
|
|
||||||
log_abort_msg = buffer;
|
log_abort_msg = buffer;
|
||||||
|
@ -1472,7 +1472,7 @@ static void unit_status_log_starting_stopping_reloading(Unit *u, JobType t) {
|
|||||||
format = unit_get_status_message_format(u, t);
|
format = unit_get_status_message_format(u, t);
|
||||||
|
|
||||||
DISABLE_WARNING_FORMAT_NONLITERAL;
|
DISABLE_WARNING_FORMAT_NONLITERAL;
|
||||||
xsprintf(buf, format, unit_description(u));
|
snprintf(buf, sizeof buf, format, unit_description(u));
|
||||||
REENABLE_WARNING;
|
REENABLE_WARNING;
|
||||||
|
|
||||||
mid = t == JOB_START ? SD_MESSAGE_UNIT_STARTING :
|
mid = t == JOB_START ? SD_MESSAGE_UNIT_STARTING :
|
||||||
|
@ -848,8 +848,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) {
|
|||||||
if (k->src_id == KDBUS_SRC_ID_KERNEL)
|
if (k->src_id == KDBUS_SRC_ID_KERNEL)
|
||||||
bus_message_set_sender_driver(bus, m);
|
bus_message_set_sender_driver(bus, m);
|
||||||
else {
|
else {
|
||||||
xsprintf(m->sender_buffer, ":1.%llu",
|
xsprintf(m->sender_buffer, ":1.%"PRIu64, k->src_id);
|
||||||
(unsigned long long)k->src_id);
|
|
||||||
m->sender = m->creds.unique_name = m->sender_buffer;
|
m->sender = m->creds.unique_name = m->sender_buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -860,8 +859,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) {
|
|||||||
else if (k->dst_id == KDBUS_DST_ID_NAME)
|
else if (k->dst_id == KDBUS_DST_ID_NAME)
|
||||||
m->destination = bus->unique_name; /* fill in unique name if the well-known name is missing */
|
m->destination = bus->unique_name; /* fill in unique name if the well-known name is missing */
|
||||||
else {
|
else {
|
||||||
xsprintf(m->destination_buffer, ":1.%llu",
|
xsprintf(m->destination_buffer, ":1.%"PRIu64, k->dst_id);
|
||||||
(unsigned long long)k->dst_id);
|
|
||||||
m->destination = m->destination_buffer;
|
m->destination = m->destination_buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,17 +75,29 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
|
|||||||
NULSTR_FOREACH(i, move_mounts) {
|
NULSTR_FOREACH(i, move_mounts) {
|
||||||
char new_mount[PATH_MAX];
|
char new_mount[PATH_MAX];
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
|
size_t n;
|
||||||
|
|
||||||
xsprintf(new_mount, "%s%s", new_root, i);
|
n = snprintf(new_mount, sizeof new_mount, "%s%s", new_root, i);
|
||||||
|
if (n >= sizeof new_mount) {
|
||||||
|
bool move = mountflags & MS_MOVE;
|
||||||
|
|
||||||
|
log_warning("New path is too long, %s: %s%s",
|
||||||
|
move ? "forcing unmount instead" : "ignoring",
|
||||||
|
new_root, i);
|
||||||
|
|
||||||
|
if (move)
|
||||||
|
if (umount2(i, MNT_FORCE) < 0)
|
||||||
|
log_warning_errno(errno, "Failed to unmount %s: %m", i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
mkdir_p_label(new_mount, 0755);
|
mkdir_p_label(new_mount, 0755);
|
||||||
|
|
||||||
if ((stat(new_mount, &sb) < 0) ||
|
if (stat(new_mount, &sb) < 0 ||
|
||||||
sb.st_dev != new_root_stat.st_dev) {
|
sb.st_dev != new_root_stat.st_dev) {
|
||||||
|
|
||||||
/* Mount point seems to be mounted already or
|
/* Mount point seems to be mounted already or
|
||||||
* stat failed. Unmount the old mount
|
* stat failed. Unmount the old mount point. */
|
||||||
* point. */
|
|
||||||
if (umount2(i, MNT_DETACH) < 0)
|
if (umount2(i, MNT_DETACH) < 0)
|
||||||
log_warning_errno(errno, "Failed to unmount %s: %m", i);
|
log_warning_errno(errno, "Failed to unmount %s: %m", i);
|
||||||
continue;
|
continue;
|
||||||
@ -97,10 +109,9 @@ int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot,
|
|||||||
|
|
||||||
if (umount2(i, MNT_FORCE) < 0)
|
if (umount2(i, MNT_FORCE) < 0)
|
||||||
log_warning_errno(errno, "Failed to unmount %s: %m", i);
|
log_warning_errno(errno, "Failed to unmount %s: %m", i);
|
||||||
}
|
|
||||||
if (mountflags & MS_BIND)
|
|
||||||
log_error_errno(errno, "Failed to bind mount %s to %s: %m", i, new_mount);
|
|
||||||
|
|
||||||
|
} else if (mountflags & MS_BIND)
|
||||||
|
log_error_errno(errno, "Failed to bind mount %s to %s: %m", i, new_mount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,16 +85,16 @@ static void usage(void)
|
|||||||
*/
|
*/
|
||||||
static int prepare(char *dir, char *filename)
|
static int prepare(char *dir, char *filename)
|
||||||
{
|
{
|
||||||
char buf[512];
|
char buf[PATH_MAX];
|
||||||
int r, fd;
|
int r, fd;
|
||||||
|
|
||||||
r = mkdir(dir, 0700);
|
r = mkdir(dir, 0700);
|
||||||
if (r < 0 && errno != EEXIST)
|
if (r < 0 && errno != EEXIST)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
|
||||||
xsprintf(buf, "%s/%s", dir, filename);
|
snprintf(buf, sizeof buf, "%s/%s", dir, filename);
|
||||||
|
|
||||||
fd = open(buf,O_RDWR|O_CREAT|O_CLOEXEC, S_IRUSR|S_IWUSR);
|
fd = open(buf, O_RDWR|O_CREAT|O_CLOEXEC, S_IRUSR|S_IWUSR);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
fprintf(stderr, "Cannot open %s: %m\n", buf);
|
fprintf(stderr, "Cannot open %s: %m\n", buf);
|
||||||
|
|
||||||
|
@ -211,7 +211,7 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
|
|||||||
char *s;
|
char *s;
|
||||||
const char *attr, *port_name;
|
const char *attr, *port_name;
|
||||||
struct udev_device *pci = NULL;
|
struct udev_device *pci = NULL;
|
||||||
char slots[256], str[256];
|
char slots[PATH_MAX];
|
||||||
_cleanup_closedir_ DIR *dir = NULL;
|
_cleanup_closedir_ DIR *dir = NULL;
|
||||||
struct dirent *dent;
|
struct dirent *dent;
|
||||||
int hotplug_slot = 0, err = 0;
|
int hotplug_slot = 0, err = 0;
|
||||||
@ -248,7 +248,8 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
|
|||||||
err = -ENOENT;
|
err = -ENOENT;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
xsprintf(slots, "%s/slots", udev_device_get_syspath(pci));
|
|
||||||
|
snprintf(slots, sizeof slots, "%s/slots", udev_device_get_syspath(pci));
|
||||||
dir = opendir(slots);
|
dir = opendir(slots);
|
||||||
if (!dir) {
|
if (!dir) {
|
||||||
err = -errno;
|
err = -errno;
|
||||||
@ -257,8 +258,7 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
|
|||||||
|
|
||||||
for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) {
|
for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) {
|
||||||
int i;
|
int i;
|
||||||
char *rest;
|
char *rest, *address, str[PATH_MAX];
|
||||||
char *address;
|
|
||||||
|
|
||||||
if (dent->d_name[0] == '.')
|
if (dent->d_name[0] == '.')
|
||||||
continue;
|
continue;
|
||||||
@ -267,7 +267,8 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
|
|||||||
continue;
|
continue;
|
||||||
if (i < 1)
|
if (i < 1)
|
||||||
continue;
|
continue;
|
||||||
xsprintf(str, "%s/%s/address", slots, dent->d_name);
|
|
||||||
|
snprintf(str, sizeof str, "%s/%s/address", slots, dent->d_name);
|
||||||
if (read_one_line_file(str, &address) >= 0) {
|
if (read_one_line_file(str, &address) >= 0) {
|
||||||
/* match slot address with device by stripping the function */
|
/* match slot address with device by stripping the function */
|
||||||
if (strneq(address, udev_device_get_sysname(names->pcidev), strlen(address)))
|
if (strneq(address, udev_device_get_sysname(names->pcidev), strlen(address)))
|
||||||
|
@ -337,7 +337,7 @@ out:
|
|||||||
void udev_node_add(struct udev_device *dev, bool apply,
|
void udev_node_add(struct udev_device *dev, bool apply,
|
||||||
mode_t mode, uid_t uid, gid_t gid,
|
mode_t mode, uid_t uid, gid_t gid,
|
||||||
struct udev_list *seclabel_list) {
|
struct udev_list *seclabel_list) {
|
||||||
char filename[UTIL_PATH_SIZE];
|
char filename[sizeof("/dev/block/:") + 2*DECIMAL_STR_MAX(unsigned)];
|
||||||
struct udev_list_entry *list_entry;
|
struct udev_list_entry *list_entry;
|
||||||
|
|
||||||
log_debug("handling device node '%s', devnum=%s, mode=%#o, uid="UID_FMT", gid="GID_FMT,
|
log_debug("handling device node '%s', devnum=%s, mode=%#o, uid="UID_FMT", gid="GID_FMT,
|
||||||
@ -360,7 +360,7 @@ void udev_node_add(struct udev_device *dev, bool apply,
|
|||||||
|
|
||||||
void udev_node_remove(struct udev_device *dev) {
|
void udev_node_remove(struct udev_device *dev) {
|
||||||
struct udev_list_entry *list_entry;
|
struct udev_list_entry *list_entry;
|
||||||
char filename[UTIL_PATH_SIZE];
|
char filename[sizeof("/dev/block/:") + 2*DECIMAL_STR_MAX(unsigned)];
|
||||||
|
|
||||||
/* remove/update symlinks, remove symlinks from name index */
|
/* remove/update symlinks, remove symlinks from name index */
|
||||||
udev_list_entry_foreach(list_entry, udev_device_get_devlinks_list_entry(dev))
|
udev_list_entry_foreach(list_entry, udev_device_get_devlinks_list_entry(dev))
|
||||||
|
@ -89,7 +89,7 @@ unlink:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void udev_watch_begin(struct udev *udev, struct udev_device *dev) {
|
void udev_watch_begin(struct udev *udev, struct udev_device *dev) {
|
||||||
char filename[UTIL_PATH_SIZE];
|
char filename[sizeof("/run/udev/watch/") + DECIMAL_STR_MAX(int)];
|
||||||
int wd;
|
int wd;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ void udev_watch_begin(struct udev *udev, struct udev_device *dev) {
|
|||||||
|
|
||||||
void udev_watch_end(struct udev *udev, struct udev_device *dev) {
|
void udev_watch_end(struct udev *udev, struct udev_device *dev) {
|
||||||
int wd;
|
int wd;
|
||||||
char filename[UTIL_PATH_SIZE];
|
char filename[sizeof("/run/udev/watch/") + DECIMAL_STR_MAX(int)];
|
||||||
|
|
||||||
if (inotify_fd < 0)
|
if (inotify_fd < 0)
|
||||||
return;
|
return;
|
||||||
@ -135,7 +135,7 @@ void udev_watch_end(struct udev *udev, struct udev_device *dev) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct udev_device *udev_watch_lookup(struct udev *udev, int wd) {
|
struct udev_device *udev_watch_lookup(struct udev *udev, int wd) {
|
||||||
char filename[UTIL_PATH_SIZE];
|
char filename[sizeof("/run/udev/watch/") + DECIMAL_STR_MAX(int)];
|
||||||
char device[UTIL_NAME_SIZE];
|
char device[UTIL_NAME_SIZE];
|
||||||
ssize_t len;
|
ssize_t len;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user