]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: seclabel: Add deep copy function for device labels
authorPeter Krempa <pkrempa@redhat.com>
Thu, 12 Jun 2014 14:03:06 +0000 (16:03 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 20 Jun 2014 07:14:47 +0000 (09:14 +0200)
src/util/virseclabel.c
src/util/virseclabel.h

index 5a4d78e3da107187f6cdebd89681b9fbe0ed5b05..8f07de39b701d1de0f2172cfa811885052ddfe9c 100644 (file)
@@ -80,3 +80,26 @@ virSecurityDeviceLabelDefNew(const char *model)
 
     return seclabel;
 }
+
+
+virSecurityDeviceLabelDefPtr
+virSecurityDeviceLabelDefCopy(const virSecurityDeviceLabelDef *src)
+{
+    virSecurityDeviceLabelDefPtr ret;
+
+    if (VIR_ALLOC(ret) < 0)
+        return NULL;
+
+    ret->norelabel = src->norelabel;
+    ret->labelskip = src->labelskip;
+
+    if (VIR_STRDUP(ret->model, src->model) < 0 ||
+        VIR_STRDUP(ret->label, src->label) < 0)
+        goto error;
+
+    return ret;
+
+ error:
+    virSecurityDeviceLabelDefFree(ret);
+    return NULL;
+}
index 9e970a530ca5d6b35d2005fd690456c088d32b56..b90d212d7d226a0cf83b99b9aef535cb9f2efc4d 100644 (file)
@@ -45,7 +45,7 @@ struct _virSecurityLabelDef {
 };
 
 
-/* Security configuration for domain */
+/* Security configuration for device */
 typedef struct _virSecurityDeviceLabelDef virSecurityDeviceLabelDef;
 typedef virSecurityDeviceLabelDef *virSecurityDeviceLabelDefPtr;
 struct _virSecurityDeviceLabelDef {
@@ -61,6 +61,10 @@ virSecurityLabelDefNew(const char *model);
 virSecurityDeviceLabelDefPtr
 virSecurityDeviceLabelDefNew(const char *model);
 
+virSecurityDeviceLabelDefPtr
+virSecurityDeviceLabelDefCopy(const virSecurityDeviceLabelDef *src)
+    ATTRIBUTE_NONNULL(1);
+
 void virSecurityLabelDefFree(virSecurityLabelDefPtr def);
 void virSecurityDeviceLabelDefFree(virSecurityDeviceLabelDefPtr def);