#include "uuid.h"
#include "buf.h"
#include "memory.h"
+#include "util.h"
static char *openvzLocateConfDir(void);
static struct openvz_vm_def *openvzParseXML(virConnectPtr conn, xmlDocPtr xml);
int
strtoI(const char *str)
{
- int base = 10;
- char *endptr;
int val;
- val = (int) strtol(str, &endptr, base);
+ if (virStrToLong_i(str, NULL, 10, &val) < 0)
+ return 0 ;
- /* Check for various possible errors */
- if ((endptr == str) /* "No digits were found" */
- ||((*endptr != '\0')
- && (*endptr != ' ')) /*"Name contain characters other than integers" */ )
- return 0;
return val;
}
goto exit;
}
- sscanf(vmdef->name, "%d", &vm->vpsid);
+ vm->vpsid = strtoI(vmdef->name);
vm->status = VIR_DOMAIN_RUNNING;
ovz_driver.num_inactive--;
ovz_driver.num_active++;
return -1;
}
- sscanf(vm->vmdef->name, "%d", &vm->vpsid);
+ vm->vpsid = strtoI(vm->vmdef->name);
vm->status = VIR_DOMAIN_RUNNING;
ovz_driver.num_inactive --;
ovz_driver.num_active ++;
int veid, pid, outfd, errfd;
int ret;
char buf[32];
+ char *endptr;
const char *cmd[] = {VZLIST, "-ovpsid", "-H" , NULL};
ret = virExec(conn, (char **)cmd, &pid, -1, &outfd, &errfd);
while(got < nids){
ret = openvz_readline(outfd, buf, 32);
if(!ret) break;
- sscanf(buf, "%d", &veid);
+ if (virStrToLong_i(buf, &endptr, 10, &veid) < 0) {
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
+ _("Could not parse VPS ID %s"), buf);
+ continue;
+ }
ids[got] = veid;
got ++;
}
int veid, pid, outfd, errfd, ret;
char vpsname[OPENVZ_NAME_MAX];
char buf[32];
+ char *endptr;
const char *cmd[] = {VZLIST, "-ovpsid", "-H", "-S", NULL};
/* the -S options lists only stopped domains */
while(got < nnames){
ret = openvz_readline(outfd, buf, 32);
if(!ret) break;
- sscanf(buf, "%d\n", &veid);
+ if (virStrToLong_i(buf, &endptr, 10, &veid) < 0) {
+ openvzError(conn, VIR_ERR_INTERNAL_ERROR,
+ _("Could not parse VPS ID %s"), buf);
+ continue;
+ }
sprintf(vpsname, "%d", veid);
names[got] = strdup(vpsname);
got ++;