path = realpath(pathname, NULL);
if (path == NULL) {
- char buf[PATH_MAX], *ptr;
+ char tmp[PATH_MAX - 1];
+ char buf[PATH_MAX];
+ char *ptr;
+ tmp[0] = '\0';
buf[0] = '\0';
if (pathname[0] != '/') {
/* Need an absolute path, but realpath() only works for
* pathnames that actually exist. We go through the
* extra hurdle of dirname(getcwd() + pathname) in
* case the relative pathname contains ".." in it. */
- if (getcwd(buf, sizeof(buf) - 2) == NULL) {
+ char realpath[PATH_MAX - 1];
+
+ if (getcwd(realpath, sizeof(realpath) - 2) == NULL) {
rc = -errno;
llapi_error(LLAPI_MSG_ERROR, rc,
"cannot get current working directory");
return rc;
}
- rc = strlcat(buf, "/", sizeof(buf));
- if (rc >= sizeof(buf)) {
+
+ rc = snprintf(tmp, sizeof(tmp), "%s/", realpath);
+ if (rc >= sizeof(tmp)) {
rc = -E2BIG;
llapi_error(LLAPI_MSG_ERROR, rc,
"invalid parent path '%s'",
- buf);
+ tmp);
return rc;
}
}
- rc = strlcat(buf, pathname, sizeof(buf));
+
+ rc = snprintf(buf, sizeof(buf), "%s%s", tmp, pathname);
if (rc >= sizeof(buf)) {
rc = -E2BIG;
llapi_error(LLAPI_MSG_ERROR, rc,
/* name is FSNAME.POOLNAME */
if (strlen(poolname) >= sizeof(fsname))
return -EOVERFLOW;
- strlcpy(fsname, poolname, sizeof(fsname));
+
+ snprintf(fsname, sizeof(fsname), "%s", poolname);
pool = strchr(fsname, '.');
if (pool == NULL)
return -EINVAL;
* a large filesystem. */
fname = (fname == NULL ? path : fname + 1);
/* retrieve needed file info */
- strlcpy((char *)lmd, fname, lumlen);
+ snprintf((char *)lmd, lumlen, "%s", fname);
ret = ioctl(dirfd(parent), IOC_MDC_GETFILEINFO, (void *)lmd);
}
if (!buf)
return -ENOMEM;
- strlcpy(buf, path, PATH_MAX + 1);
+ snprintf(buf, PATH_MAX + 1, "%s", path);
ret = common_param_init(param, buf);
if (ret)
goto out;
if (rc)
return rc;
} else {
- strlcpy(fsname_buf, fsname, sizeof(fsname_buf));
+ snprintf(fsname_buf, sizeof(fsname_buf), "%s", fsname);
}
if (strncmp(fsname_buf, cache.fsname, sizeof(fsname_buf) - 1) != 0) {
cache.stripecount = tmp[0];
cache.stripesize = tmp[1];
cache.stripeoffset = tmp[2];
- strlcpy(cache.fsname, fsname_buf, sizeof(cache.fsname));
+ snprintf(cache.fsname, sizeof(cache.fsname), "%s", fsname_buf);
}
if (scount)
lov_v1v3_pool_name(struct lov_user_md *v1, char *pool_name)
{
if (v1->lmm_magic == LOV_USER_MAGIC_V3)
- strlcpy(pool_name, ((struct lov_user_md_v3 *)v1)->lmm_pool_name,
- LOV_MAXPOOLNAME);
+ snprintf(pool_name, LOV_MAXPOOLNAME, "%s",
+ ((struct lov_user_md_v3 *)v1)->lmm_pool_name);
else
pool_name[0] = '\0';
}
struct lov_user_ost_data_v1 *objects;
struct lov_user_md_v3 *lmmv3 = (void *)¶m->fp_lmd->lmd_lmm;
- strlcpy(pool_name, lmmv3->lmm_pool_name, sizeof(pool_name));
+ snprintf(pool_name, sizeof(pool_name), "%s",
+ lmmv3->lmm_pool_name);
objects = lmmv3->lmm_objects;
lov_dump_user_lmm_v1v3(¶m->fp_lmd->lmd_lmm, pool_name,
objects, path, param->fp_obd_index,
struct lmv_user_md *lum;
lum = (struct lmv_user_md *)param->fp_lmv_md;
- strlcpy(pool_name, lum->lum_pool_name, sizeof(pool_name));
+ snprintf(pool_name, sizeof(pool_name), "%s",
+ lum->lum_pool_name);
lmv_dump_user_lmm(lum, pool_name, path, param->fp_obd_index,
param->fp_max_depth, param->fp_verbose,
flags);
char *fname = strrchr(path, '/');
fname = (fname == NULL ? path : fname + 1);
- strlcpy((char *)¶m->fp_lmd->lmd_lmm, fname,
- param->fp_lum_size);
+ snprintf((char *)¶m->fp_lmd->lmd_lmm, param->fp_lum_size,
+ "%s", fname);
ret = ioctl(dirfd(parent), IOC_MDC_GETFILESTRIPE,
(void *)¶m->fp_lmd->lmd_lmm);