#include "viralloc.h"
#include "virfile.h"
#include "virstring.h"
+#include "virlog.h"
#define VIR_FROM_THIS VIR_FROM_STORAGE
int defaultmode)
{
char *mode;
- long v;
+ long val;
int ret = -1;
xmlNodePtr relnode;
xmlNodePtr node;
if (virXPathNode("./owner", ctxt) == NULL) {
perms->uid = (uid_t) -1;
} else {
- if (virXPathLong("number(./owner)", ctxt, &v) < 0) {
+ if (virXPathLong("number(./owner)", ctxt, &val) < 0 ||
+ ((uid_t)val != val &&
+ val != -1)) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("malformed owner element"));
goto error;
}
- perms->uid = (int)v;
+
+ perms->uid = val;
}
if (virXPathNode("./group", ctxt) == NULL) {
perms->gid = (gid_t) -1;
} else {
- if (virXPathLong("number(./group)", ctxt, &v) < 0) {
+ if (virXPathLong("number(./group)", ctxt, &val) < 0 ||
+ ((gid_t) val != val &&
+ val != -1)) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("malformed group element"));
goto error;
}
- perms->gid = (int)v;
+ perms->gid = val;
}
/* NB, we're ignoring missing labels here - they'll simply inherit */