"Daniel P. Berrange" <berrange@xxxxxxxxxx> wrote: ... > +int virStoragePoolObjSaveDef(virConnectPtr conn, > + virStorageDriverStatePtr driver, > + virStoragePoolObjPtr pool, > + virStoragePoolDefPtr def) { > + char *xml; > + int fd = -1, ret = -1; > + int towrite; slightly better to use ssize_t. see below. ... > + if ((fd = open(pool->configFile, > + O_WRONLY | O_CREAT | O_TRUNC, > + S_IRUSR | S_IWUSR )) < 0) { > + virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR, > + "cannot create config file %s: %s", > + pool->configFile, strerror(errno)); > + goto cleanup; > + } > + > + towrite = strlen(xml); Here, you'd expect towrite to be of type size_t. But in comparing with write's return value, you want ssize_t. No big deal in any case, because we won't be generating 2^31-byte-long XML strings. > + if (write(fd, xml, towrite) != towrite) { write should always be used in a loop, since it can succeed and write less than requested. Here, it's fine to use fopen/fwrite/fclose instead. > + virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR, > + "cannot write config file %s: %s", > + pool->configFile, strerror(errno)); -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list