]> wimlib.net Git - wimlib/blobdiff - src/dentry.c
utf16le_dupz() input may be misaligned
[wimlib] / src / dentry.c
index 4bb170e7d8fad3e394c0fd7c99437d94c65e77fe..862c6640c9bb54b9bef52610824604091b830e13 100644 (file)
@@ -5,19 +5,18 @@
 /*
  * Copyright (C) 2012, 2013, 2014 Eric Biggers
  *
- * This file is part of wimlib, a library for working with WIM files.
- *
- * wimlib is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 3 of the License, or (at your option) any later
- * version.
- *
- * wimlib is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * wimlib; if not, see http://www.gnu.org/licenses/.
+ * This file is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 3 of the License, or (at your option) any
+ * later version.
+ *
+ * This file is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this file; if not, see http://www.gnu.org/licenses/.
  */
 
 /*
 #  include "config.h"
 #endif
 
-#include "wimlib/case.h"
+#include "wimlib/assert.h"
 #include "wimlib/dentry.h"
+#include "wimlib/inode.h"
 #include "wimlib/encoding.h"
 #include "wimlib/endianness.h"
-#include "wimlib/error.h"
-#include "wimlib/lookup_table.h"
 #include "wimlib/metadata.h"
 #include "wimlib/paths.h"
-#include "wimlib/resource.h"
-#include "wimlib/security.h"
-#include "wimlib/sha1.h"
-#include "wimlib/timestamp.h"
 
 #include <errno.h>
 
@@ -305,7 +299,7 @@ dentry_set_name_utf16le(struct wim_dentry *dentry, const utf16lechar *name,
  * indices.  For dentries that are currently linked into the tree, use
  * rename_wim_path().
  *
- * Returns 0 or an error code resulting from string conversion.
+ * Returns 0 or an error code resulting from a failed string conversion.
  */
 int
 dentry_set_name(struct wim_dentry *dentry, const tchar *name)
@@ -478,7 +472,7 @@ for_dentry_in_tree_depth(struct wim_dentry *root,
  * Whenever possible, use dentry_full_path() instead of calling this and
  * accessing _full_path directly.
  *
- * Returns 0 or an error code resulting from string conversion.
+ * Returns 0 or an error code resulting from a failed string conversion.
  */
 int
 calculate_dentry_full_path(struct wim_dentry *dentry)
@@ -902,7 +896,7 @@ get_parent_dentry(WIMStruct *wim, const tchar *path,
  *
  * On success, returns 0 and a pointer to the new, allocated dentry is stored in
  * *dentry_ret.  On failure, returns WIMLIB_ERR_NOMEM or an error code resulting
- * from string conversion.
+ * from a failed string conversion.
  */
 int
 new_dentry(const tchar *name, struct wim_dentry **dentry_ret)
@@ -918,8 +912,6 @@ new_dentry(const tchar *name, struct wim_dentry **dentry_ret)
                ret = dentry_set_name(dentry, name);
                if (ret) {
                        FREE(dentry);
-                       ERROR("Failed to set name on new dentry with name \"%"TS"\"",
-                             name);
                        return ret;
                }
        }
@@ -1350,8 +1342,7 @@ read_dentry(const u8 * restrict buf, size_t buf_len,
        /* Read the filename if present.  Note: if the filename is empty, there
         * is no null terminator following it.  */
        if (file_name_nbytes) {
-               dentry->file_name = utf16le_dupz((const utf16lechar *)p,
-                                                file_name_nbytes);
+               dentry->file_name = utf16le_dupz(p, file_name_nbytes);
                if (dentry->file_name == NULL) {
                        ret = WIMLIB_ERR_NOMEM;
                        goto err_free_dentry;
@@ -1363,8 +1354,7 @@ read_dentry(const u8 * restrict buf, size_t buf_len,
        /* Read the short filename if present.  Note: if there is no short
         * filename, there is no null terminator following it. */
        if (short_name_nbytes) {
-               dentry->short_name = utf16le_dupz((const utf16lechar *)p,
-                                                 short_name_nbytes);
+               dentry->short_name = utf16le_dupz(p, short_name_nbytes);
                if (dentry->short_name == NULL) {
                        ret = WIMLIB_ERR_NOMEM;
                        goto err_free_dentry;