if (chmod(name, stb2.st_mode & 07777))
perror("chmod");
} else {
- snprintf(sym, 10000, "%s%s%d", orig, odig?"p":"", i);
+ snprintf(sym, sizeof(sym), "%s%s%d", orig, odig?"p":"", i);
symlink(sym, name);
}
stat(name, &stb2);
use_mdp = 0;
}
if (num < 0 && trustworthy == LOCAL && name) {
- /* if name is numeric, us that for num */
+ /* if name is numeric, use that for num
+ * if it is not already in use */
char *ep;
num = strtoul(name, &ep, 10);
if (ep == name || *ep)
num = -1;
+ else if (mddev_busy(use_mdp ? (-1-num) : num))
+ num = -1;
}
if (num < 0) {