mirror of
https://github.com/systemd/systemd.git
synced 2024-12-26 03:22:00 +03:00
set buffer size if strlcpy/strlcat indicate truncation
This commit is contained in:
parent
7e59986391
commit
1f7a36f2c0
@ -475,10 +475,12 @@ static int pass_env_to_socket(const char *sockname, const char *devpath, const c
|
||||
|
||||
bufpos = snprintf(buf, sizeof(buf)-1, "%s@%s", action, devpath);
|
||||
bufpos++;
|
||||
for (i = 0; environ[i] != NULL && bufpos < sizeof(buf); i++) {
|
||||
for (i = 0; environ[i] != NULL && bufpos < (sizeof(buf)-1); i++) {
|
||||
bufpos += strlcpy(&buf[bufpos], environ[i], sizeof(buf) - bufpos-1);
|
||||
bufpos++;
|
||||
}
|
||||
if (bufpos > sizeof(buf))
|
||||
bufpos = sizeof(buf);
|
||||
|
||||
count = sendto(sock, &buf, bufpos, 0, (struct sockaddr *)&saddr, addrlen);
|
||||
if (count < 0)
|
||||
|
@ -355,6 +355,8 @@ char *sysfs_attr_get_value(const char *devpath, const char *attr_name)
|
||||
|
||||
dbg("open '%s'/'%s'", devpath, attr_name);
|
||||
sysfs_len = strlcpy(path_full, sysfs_path, sizeof(path_full));
|
||||
if(sysfs_len >= sizeof(path_full))
|
||||
sysfs_len = sizeof(path_full) - 1;
|
||||
path = &path_full[sysfs_len];
|
||||
strlcat(path_full, devpath, sizeof(path_full));
|
||||
strlcat(path_full, "/", sizeof(path_full));
|
||||
|
@ -79,6 +79,8 @@ static void print_all_attributes(const char *devpath, const char *key)
|
||||
if (attr_value == NULL)
|
||||
continue;
|
||||
len = strlcpy(value, attr_value, sizeof(value));
|
||||
if(len >= sizeof(value))
|
||||
len = sizeof(value) - 1;
|
||||
dbg("attr '%s'='%s'(%zi)", dent->d_name, value, len);
|
||||
|
||||
/* remove trailing newlines */
|
||||
|
@ -43,7 +43,6 @@ static int init_udev_monitor_socket(void)
|
||||
{
|
||||
struct sockaddr_un saddr;
|
||||
socklen_t addrlen;
|
||||
const int feature_on = 1;
|
||||
int retval;
|
||||
|
||||
memset(&saddr, 0x00, sizeof(saddr));
|
||||
@ -67,9 +66,6 @@ static int init_udev_monitor_socket(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* enable receiving of the sender credentials */
|
||||
setsockopt(udev_monitor_sock, SOL_SOCKET, SO_PASSCRED, &feature_on, sizeof(feature_on));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -435,6 +435,8 @@ static void scan_failed(void)
|
||||
continue;
|
||||
|
||||
start = strlcpy(device, sysfs_path, sizeof(device));
|
||||
if(start >= sizeof(device))
|
||||
start = sizeof(device) - 1;
|
||||
strlcat(device, dent->d_name, sizeof(device));
|
||||
path_decode(&device[start]);
|
||||
device_list_insert(device);
|
||||
|
Loading…
Reference in New Issue
Block a user