if (tmp->skip)
return 0;
- if ((vol->target.perms.gid != -1)
- && (setgid(vol->target.perms.gid) != 0)) {
- virReportSystemError(errno,
- _("Cannot set gid to %u before creating %s"),
- vol->target.perms.gid, vol->target.path);
- return -1;
- }
- if ((vol->target.perms.uid != -1)
- && (setuid(vol->target.perms.uid) != 0)) {
- virReportSystemError(errno,
- _("Cannot set uid to %u before creating %s"),
- vol->target.perms.uid, vol->target.path);
+ if (virSetUIDGID(vol->target.perms.uid, vol->target.perms.gid) < 0)
return -1;
- }
+
return 0;
}
/* set desired uid/gid, then attempt to create the file */
- if ((gid != 0) && (setgid(gid) != 0)) {
+ if (virSetUIDGID(uid, gid) < 0) {
ret = -errno;
- virReportSystemError(errno,
- _("cannot set gid %u creating '%s'"),
- (unsigned int) gid, path);
- goto childerror;
- }
- if ((uid != 0) && (setuid(uid) != 0)) {
- ret = -errno;
- virReportSystemError(errno,
- _("cannot set uid %u creating '%s'"),
- (unsigned int) uid, path);
goto childerror;
}
if ((fd = open(path, openflags, mode)) < 0) {
/* set desired uid/gid, then attempt to create the directory */
- if ((gid != 0) && (setgid(gid) != 0)) {
- ret = -errno;
- virReportSystemError(errno, _("cannot set gid %u creating '%s'"),
- (unsigned int) gid, path);
- goto childerror;
- }
- if ((uid != 0) && (setuid(uid) != 0)) {
+ if (virSetUIDGID(uid, gid) < 0) {
ret = -errno;
- virReportSystemError(errno, _("cannot set uid %u creating '%s'"),
- (unsigned int) uid, path);
goto childerror;
}
if (mkdir(path, mode) < 0) {