]> wimlib.net Git - wimlib/blobdiff - src/security.c
win32_capture_streams(): Handle not implemented/supported
[wimlib] / src / security.c
index 628b93584d1dfff77727ecc9f845c85c2b6a6152..6ed83cd7e952a75cc50f13b091414f34cb444506 100644 (file)
@@ -146,7 +146,7 @@ struct wim_security_data_disk {
  * the validation in libntfs-3g.
  */
 static void
-empty_sacl_fixup(SECURITY_DESCRIPTOR_RELATIVE *descr, size_t *size_p)
+empty_sacl_fixup(SECURITY_DESCRIPTOR_RELATIVE *descr, u64 *size_p)
 {
        /* No-op if no NTFS-3g support, or if NTFS-3g is version 2013 or later
         * */
@@ -181,9 +181,10 @@ new_wim_security_data(void)
  * Note: There is no `offset' argument because the security data is located at
  * the beginning of the metadata resource.
  *
- * Possible errors include:
+ * Return values:
+ *     WIMLIB_ERR_SUCCESS (0)
+ *     WIMLIB_ERR_INVALID_METADATA_RESOURCE
  *     WIMLIB_ERR_NOMEM
- *     WIMLIB_ERR_INVALID_SECURITY_DATA
  */
 int
 read_wim_security_data(const u8 metadata_resource[], size_t metadata_resource_len,
@@ -291,7 +292,7 @@ out_align_total_length:
        goto out;
 out_invalid_sd:
        ERROR("WIM security data is invalid!");
-       ret = WIMLIB_ERR_INVALID_SECURITY_DATA;
+       ret = WIMLIB_ERR_INVALID_METADATA_RESOURCE;
        goto out_free_sd;
 out_of_memory:
        ERROR("Out of memory while reading WIM security data!");
@@ -568,13 +569,12 @@ sd_set_add_sd(struct wim_sd_set *sd_set, const char *descriptor, size_t size)
        new = MALLOC(sizeof(*new));
        if (!new)
                goto out;
-       descr_copy = MALLOC(size);
+
+       descr_copy = memdup(descriptor, size);
        if (!descr_copy)
                goto out_free_node;
 
        sd = sd_set->sd;
-
-       memcpy(descr_copy, descriptor, size);
        new->security_id = sd->num_entries;
        copy_hash(new->hash, hash);