!strcmp(direntp->d_name, ".."))
continue;
- rc = snprintf(pathname, PATH_MAX, "%s/%s", dirname, direntp->d_name);
- if (rc < 0 || rc >= PATH_MAX) {
+ rc = strnprintf(pathname, sizeof(pathname), "%s/%s", dirname, direntp->d_name);
+ if (rc < 0) {
ERROR("The name of path is too long");
failed = 1;
continue;
if (!rundir)
return NULL;
- ret = snprintf(rundir, len, "%s/.cache/lxc/run/", homedir);
- if (ret < 0 || (size_t)ret >= len)
+ ret = strnprintf(rundir, len, "%s/.cache/lxc/run/", homedir);
+ if (ret < 0)
return ret_set_errno(NULL, EIO);
return move_ptr(rundir);
+ LXC_NAMESPACE_NAME_MAX];
/* Switch to new ns */
- ret = snprintf(nspath, sizeof(nspath), "/proc/%d/ns/%s", pid, ns);
- if (ret < 0 || ret >= sizeof(nspath))
+ ret = strnprintf(nspath, sizeof(nspath), "/proc/%d/ns/%s", pid, ns);
+ if (ret < 0)
return false;
fd = open(nspath, O_RDONLY | O_CLOEXEC);
lxc_iterate_parts(entry, path, ":") {
if (rootfs)
- ret = snprintf(cmdpath, PATH_MAX, "%s/%s/%s", rootfs,
- entry, cmd);
+ ret = strnprintf(cmdpath, sizeof(cmdpath), "%s/%s/%s", rootfs, entry, cmd);
else
- ret = snprintf(cmdpath, PATH_MAX, "%s/%s", entry, cmd);
- if (ret < 0 || ret >= PATH_MAX)
+ ret = strnprintf(cmdpath, sizeof(cmdpath), "%s/%s", entry, cmd);
+ if (ret < 0)
continue;
if (access(cmdpath, X_OK) == 0)
else
tmp = empty;
- ret = snprintf(retv, PATH_MAX, "%s/%s/%s", tmp, SBINDIR, "/init.lxc");
- if (ret < 0 || ret >= PATH_MAX) {
+ ret = strnprintf(retv, PATH_MAX, "%s/%s/%s", tmp, SBINDIR, "/init.lxc");
+ if (ret < 0) {
ERROR("The name of path is too long");
goto out1;
}
if (access(retv, X_OK) == 0)
return retv;
- ret = snprintf(retv, PATH_MAX, "%s/%s/%s", tmp, LXCINITDIR, "/lxc/lxc-init");
- if (ret < 0 || ret >= PATH_MAX) {
+ ret = strnprintf(retv, PATH_MAX, "%s/%s/%s", tmp, LXCINITDIR, "/lxc/lxc-init");
+ if (ret < 0) {
ERROR("The name of path is too long");
goto out1;
}
if (access(retv, X_OK) == 0)
return retv;
- ret = snprintf(retv, PATH_MAX, "%s/usr/lib/lxc/lxc-init", tmp);
- if (ret < 0 || ret >= PATH_MAX) {
+ ret = strnprintf(retv, PATH_MAX, "%s/usr/lib/lxc/lxc-init", tmp);
+ if (ret < 0) {
ERROR("The name of path is too long");
goto out1;
}
if (access(retv, X_OK) == 0)
return retv;
- ret = snprintf(retv, PATH_MAX, "%s/sbin/lxc-init", tmp);
- if (ret < 0 || ret >= PATH_MAX) {
+ ret = strnprintf(retv, PATH_MAX, "%s/sbin/lxc-init", tmp);
+ if (ret < 0) {
ERROR("The name of path is too long");
goto out1;
}
if (rootfs)
goto out1;
- ret = snprintf(retv, PATH_MAX, "/init.lxc.static");
- if (ret < 0 || ret >= PATH_MAX) {
+ ret = strnprintf(retv, PATH_MAX, "/init.lxc.static");
+ if (ret < 0) {
WARN("Nonsense - name /lxc.init.static too long");
goto out1;
}
if (!tpath)
return NULL;
- ret = snprintf(tpath, len, "%s/lxc-%s", LXCTEMPLATEDIR, t);
- if (ret < 0 || ret >= len) {
+ ret = strnprintf(tpath, len, "%s/lxc-%s", LXCTEMPLATEDIR, t);
+ if (ret < 0) {
free(tpath);
return NULL;
}
source_fd = openat2(beneath_fd, src, &how, sizeof(how));
if (source_fd < 0)
return -errno;
- ret = snprintf(src_buf, sizeof(src_buf), "/proc/self/fd/%d", source_fd);
- if (ret < 0 || ret >= sizeof(src_buf))
+ ret = strnprintf(src_buf, sizeof(src_buf), "/proc/self/fd/%d", source_fd);
+ if (ret < 0)
return -EIO;
} else {
src_buf[0] = '\0';
target_fd = openat2(beneath_fd, dst, &how, sizeof(how));
if (target_fd < 0)
return log_error_errno(-errno, errno, "Failed to open %d(%s)", beneath_fd, dst);
- ret = snprintf(tgt_buf, sizeof(tgt_buf), "/proc/self/fd/%d", target_fd);
- if (ret < 0 || ret >= sizeof(tgt_buf))
+ ret = strnprintf(tgt_buf, sizeof(tgt_buf), "/proc/self/fd/%d", target_fd);
+ if (ret < 0)
return -EIO;
if (!is_empty_string(src_buf))
if (srcfd < 0)
return srcfd;
- ret = snprintf(srcbuf, sizeof(srcbuf), "/proc/self/fd/%d", srcfd);
- if (ret < 0 || ret >= (int)sizeof(srcbuf)) {
+ ret = strnprintf(srcbuf, sizeof(srcbuf), "/proc/self/fd/%d", srcfd);
+ if (ret < 0) {
close(srcfd);
ERROR("Out of memory");
return -EINVAL;
return destfd;
}
- ret = snprintf(destbuf, sizeof(destbuf), "/proc/self/fd/%d", destfd);
- if (ret < 0 || ret >= (int)sizeof(destbuf)) {
+ ret = strnprintf(destbuf, sizeof(destbuf), "/proc/self/fd/%d", destfd);
+ if (ret < 0) {
if (srcfd != -1)
close(srcfd);
size_t n = 0;
bool bret = false;
- ret = snprintf(status, __PROC_STATUS_LEN, "/proc/%d/status", pid);
- if (ret < 0 || ret >= __PROC_STATUS_LEN)
+ ret = strnprintf(status, sizeof(status), "/proc/%d/status", pid);
+ if (ret < 0)
return bret;
f = fopen(status, "re");
* are supported by the kernel by passing in the NULL or the empty
* string.
*/
- ret = snprintf(path, __NS_PATH_LEN, "/proc/%d/ns%s%s", pid,
- !ns || strcmp(ns, "") == 0 ? "" : "/",
- !ns || strcmp(ns, "") == 0 ? "" : ns);
- if (ret < 0 || (size_t)ret >= __NS_PATH_LEN)
+ ret = strnprintf(path, sizeof(path), "/proc/%d/ns%s%s", pid,
+ !ns || strcmp(ns, "") == 0 ? "" : "/",
+ !ns || strcmp(ns, "") == 0 ? "" : ns);
+ if (ret < 0)
return ret_errno(EIO);
return open(path, O_RDONLY | O_CLOEXEC);
}
}
- ret = snprintf(loop_name, LO_NAME_SIZE, "/dev/%s", dp->d_name);
- if (ret < 0 || ret >= LO_NAME_SIZE) {
+ ret = strnprintf(loop_name, LO_NAME_SIZE, "/dev/%s", dp->d_name);
+ if (ret < 0) {
close(fd);
fd = -1;
continue;
goto on_error;
}
- ret = snprintf(name_loop, LO_NAME_SIZE, "/dev/loop%d", loop_nr);
- if (ret < 0 || ret >= LO_NAME_SIZE)
+ ret = strnprintf(name_loop, LO_NAME_SIZE, "/dev/loop%d", loop_nr);
+ if (ret < 0)
goto on_error;
fd_tmp = open(name_loop, O_RDWR | O_CLOEXEC);
if (fd_tmp < 0) {
/* on Android loop devices are moved under /dev/block, give it a shot */
- ret = snprintf(name_loop, LO_NAME_SIZE, "/dev/block/loop%d", loop_nr);
- if (ret < 0 || ret >= LO_NAME_SIZE)
+ ret = strnprintf(name_loop, LO_NAME_SIZE, "/dev/block/loop%d", loop_nr);
+ if (ret < 0)
goto on_error;
fd_tmp = open(name_loop, O_RDWR | O_CLOEXEC);
if (!strcmp(nic, "none"))
return true;
- ret = snprintf(path, __LXC_SYS_CLASS_NET_LEN, "/sys/class/net/%s", nic);
- if (ret < 0 || (size_t)ret >= __LXC_SYS_CLASS_NET_LEN)
+ ret = strnprintf(path, sizeof(path), "/sys/class/net/%s", nic);
+ if (ret < 0)
return false;
ret = stat(path, &sb);