ef9089f4e8
Update to the head of the upstream staging branch * Patches 0005-0042 are from the upstream staging branch * Previous patches 0005 & 0006 are now patches 0023 & 0005 Rename redhat patches * Previous patches 0007-0017 are now patches 0043-0053 Change from using readline to libedit * readline is licensed GPL v3, and multipathd includes code licensed gpl v2. Remove README.alua * information moved to README.md
116 lines
3.9 KiB
Diff
116 lines
3.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Martin Wilck <mwilck@suse.com>
|
|
Date: Tue, 5 Jul 2022 11:52:42 +0200
|
|
Subject: [PATCH] libmultipath: get rid of PATH_SIZE
|
|
|
|
replace PATH_SIZE with the system limit PATH_MAX. In some places,
|
|
PATH_SIZE was used for file names. Use FILE_NAME_SIZE in these cases.
|
|
Also, use a constant for "multipathd.service" in systemd_service_enabled_in().
|
|
|
|
Signed-off-by: Martin Wilck <mwilck@suse.com>
|
|
|
|
Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
---
|
|
libmultipath/structs.h | 3 ---
|
|
libmultipath/sysfs.c | 8 ++++----
|
|
libmultipath/util.c | 8 +++++---
|
|
multipathd/cli_handlers.c | 2 +-
|
|
4 files changed, 10 insertions(+), 11 deletions(-)
|
|
|
|
diff --git a/libmultipath/structs.h b/libmultipath/structs.h
|
|
index a6a09441..dfa12ff9 100644
|
|
--- a/libmultipath/structs.h
|
|
+++ b/libmultipath/structs.h
|
|
@@ -17,7 +17,6 @@
|
|
#define FILE_NAME_SIZE 256
|
|
#define CALLOUT_MAX_SIZE 256
|
|
#define BLK_DEV_SIZE 33
|
|
-#define PATH_SIZE 512
|
|
#define NAME_SIZE 512
|
|
#define HOST_NAME_LEN 16
|
|
#define SLOT_NAME_SIZE 40
|
|
@@ -519,6 +518,4 @@ int pathcmp (const struct pathgroup *, const struct pathgroup *);
|
|
int add_feature (char **, const char *);
|
|
int remove_feature (char **, const char *);
|
|
|
|
-extern char sysfs_path[PATH_SIZE];
|
|
-
|
|
#endif /* _STRUCTS_H */
|
|
diff --git a/libmultipath/sysfs.c b/libmultipath/sysfs.c
|
|
index 1f0f2074..e48b05ec 100644
|
|
--- a/libmultipath/sysfs.c
|
|
+++ b/libmultipath/sysfs.c
|
|
@@ -48,7 +48,7 @@ static ssize_t __sysfs_attr_get_value(struct udev_device *dev, const char *attr_
|
|
char *value, size_t value_len, bool binary)
|
|
{
|
|
const char *syspath;
|
|
- char devpath[PATH_SIZE];
|
|
+ char devpath[PATH_MAX];
|
|
int fd;
|
|
ssize_t size = -1;
|
|
|
|
@@ -112,7 +112,7 @@ ssize_t sysfs_attr_set_value(struct udev_device *dev, const char *attr_name,
|
|
const char * value, size_t value_len)
|
|
{
|
|
const char *syspath;
|
|
- char devpath[PATH_SIZE];
|
|
+ char devpath[PATH_MAX];
|
|
int fd;
|
|
ssize_t size = -1;
|
|
|
|
@@ -184,7 +184,7 @@ sysfs_get_size (struct path *pp, unsigned long long * size)
|
|
int sysfs_check_holders(char * check_devt, char * new_devt)
|
|
{
|
|
unsigned int major, new_minor, table_minor;
|
|
- char path[PATH_MAX], check_dev[PATH_SIZE];
|
|
+ char path[PATH_MAX], check_dev[FILE_NAME_SIZE];
|
|
char * table_name;
|
|
DIR *dirfd;
|
|
struct dirent *holder;
|
|
@@ -194,7 +194,7 @@ int sysfs_check_holders(char * check_devt, char * new_devt)
|
|
return 0;
|
|
}
|
|
|
|
- if (devt2devname(check_dev, PATH_SIZE, check_devt)) {
|
|
+ if (devt2devname(check_dev, sizeof(check_dev), check_devt)) {
|
|
condlog(1, "can't get devname for %s", check_devt);
|
|
return 0;
|
|
}
|
|
diff --git a/libmultipath/util.c b/libmultipath/util.c
|
|
index ce5ea73e..e7e7d4c1 100644
|
|
--- a/libmultipath/util.c
|
|
+++ b/libmultipath/util.c
|
|
@@ -242,13 +242,15 @@ setup_thread_attr(pthread_attr_t *attr, size_t stacksize, int detached)
|
|
|
|
int systemd_service_enabled_in(const char *dev, const char *prefix)
|
|
{
|
|
- char path[PATH_SIZE], file[PATH_MAX], service[PATH_SIZE];
|
|
+ static const char service[] = "multipathd.service";
|
|
+ char path[PATH_MAX], file[PATH_MAX];
|
|
DIR *dirfd;
|
|
struct dirent *d;
|
|
int found = 0;
|
|
|
|
- snprintf(service, PATH_SIZE, "multipathd.service");
|
|
- snprintf(path, PATH_SIZE, "%s/systemd/system", prefix);
|
|
+ if (safe_sprintf(path, "%s/systemd/system", prefix))
|
|
+ return 0;
|
|
+
|
|
condlog(3, "%s: checking for %s in %s", dev, service, path);
|
|
|
|
dirfd = opendir(path);
|
|
diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
|
|
index d79cdd7c..db4d4412 100644
|
|
--- a/multipathd/cli_handlers.c
|
|
+++ b/multipathd/cli_handlers.c
|
|
@@ -688,7 +688,7 @@ cli_add_map (void * v, struct strbuf *reply, void * data)
|
|
struct vectors * vecs = (struct vectors *)data;
|
|
char * param = get_keyparam(v, MAP);
|
|
int major = -1, minor = -1;
|
|
- char dev_path[PATH_SIZE];
|
|
+ char dev_path[FILE_NAME_SIZE];
|
|
char *refwwid, *alias = NULL;
|
|
int rc, count = 0;
|
|
struct config *conf;
|