Commit dae1568c6c6455091e8cd9bc2e90a22af3d3880c converted the perms
member of the virStorageVolTarget struct into a pointer to make it
optional. But virStorageVolTargetDefFormat did not check perms for
NULL before dereferencing it.
---
src/conf/storage_conf.c | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 9ac5975..aa29658 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -1423,22 +1423,24 @@ virStorageVolTargetDefFormat(virStorageVolOptionsPtr options,
virBufferAsprintf(buf, "<format type='%s'/>\n", format);
}
- virBufferAddLit(buf, "<permissions>\n");
- virBufferAdjustIndent(buf, 2);
+ if (def->perms) {
+ virBufferAddLit(buf, "<permissions>\n");
+ virBufferAdjustIndent(buf, 2);
- virBufferAsprintf(buf, "<mode>0%o</mode>\n",
- def->perms->mode);
- virBufferAsprintf(buf, "<owner>%u</owner>\n",
- (unsigned int) def->perms->uid);
- virBufferAsprintf(buf, "<group>%u</group>\n",
- (unsigned int) def->perms->gid);
+ virBufferAsprintf(buf, "<mode>0%o</mode>\n",
+ def->perms->mode);
+ virBufferAsprintf(buf, "<owner>%u</owner>\n",
+ (unsigned int) def->perms->uid);
+ virBufferAsprintf(buf, "<group>%u</group>\n",
+ (unsigned int) def->perms->gid);
- virBufferEscapeString(buf, "<label>%s</label>\n",
- def->perms->label);
+ virBufferEscapeString(buf, "<label>%s</label>\n",
+ def->perms->label);
- virBufferAdjustIndent(buf, -2);
- virBufferAddLit(buf, "</permissions>\n");
+ virBufferAdjustIndent(buf, -2);
+ virBufferAddLit(buf, "</permissions>\n");
+ }
if (def->timestamps) {
virBufferAddLit(buf, "<timestamps>\n");
--
1.9.1