diff options
-rw-r--r-- | mdadm.h | 7 | ||||
-rw-r--r-- | super-intel.c | 2 | ||||
-rw-r--r-- | sysfs.c | 13 |
3 files changed, 12 insertions, 10 deletions
@@ -1001,3 +1001,10 @@ static inline int xasprintf(char **strp, const char *fmt, ...) { #define ALGORITHM_PARITY_0_6 20 #define ALGORITHM_PARITY_N_6 ALGORITHM_PARITY_N +/* Define PATH_MAX in case we don't use glibc or standard library does + * not have PATH_MAX defined. Assume max path length is 4K characters. + */ +#ifndef PATH_MAX +#define PATH_MAX 4096 +#endif + diff --git a/super-intel.c b/super-intel.c index d87b2b0..325630f 100644 --- a/super-intel.c +++ b/super-intel.c @@ -1588,7 +1588,7 @@ static void fd2devname(int fd, char *name) { struct stat st; char path[256]; - char dname[100]; + char dname[PATH_MAX]; char *nm; int rv; @@ -100,13 +100,8 @@ void sysfs_init(struct mdinfo *mdi, int fd, int devnum) struct mdinfo *sysfs_read(int fd, int devnum, unsigned long options) { - /* Longest possible name in sysfs, mounted at /sys, is - * /sys/block/md_dXXX/md/dev-XXXXX/block/dev - * /sys/block/md_dXXX/md/metadata_version - * which is about 41 characters. 50 should do for now - */ - char fname[50]; - char buf[1024]; + char fname[PATH_MAX]; + char buf[PATH_MAX]; char *base; char *dbase; struct mdinfo *sra; @@ -574,8 +569,8 @@ int sysfs_set_array(struct mdinfo *info, int vers) int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd, int in_sync) { - char dv[100]; - char nm[100]; + char dv[PATH_MAX]; + char nm[PATH_MAX]; char *dname; int rv; |