diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-11-25 13:13:05 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2019-11-25 13:20:08 +0100 |
commit | fc9a644002dc501a5c224e5cc1a7dfba3ca2d1d8 (patch) | |
tree | 6fb1acf211a1bf9005236d16d22f03f8fac746d4 /unpack/restore_fstree.c | |
parent | 2d303a7f0a6076bbf5739bae4f0fa443d0da5203 (diff) |
Cleanup: move overflow safe alloc code into libsquashfs
There were only a hand full of instances outside libsquashfs that used
the alloc code. In most cases, the thing allocated hat its size derived
from something already in memory anyway, so it is safe to assume its
size fits into a size_t.
At the same time, the opencoded Windows path conversion functions are
all unified into a single helper function.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'unpack/restore_fstree.c')
-rw-r--r-- | unpack/restore_fstree.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/unpack/restore_fstree.c b/unpack/restore_fstree.c index 7cecf16..1de9b05 100644 --- a/unpack/restore_fstree.c +++ b/unpack/restore_fstree.c @@ -9,22 +9,12 @@ #ifdef _WIN32 static int create_node(const sqfs_tree_node_t *n, const char *name) { - WCHAR *wpath = NULL; - DWORD length; + WCHAR *wpath; HANDLE fh; - length = MultiByteToWideChar(CP_UTF8, 0, name, -1, NULL, 0) + 1; - if (length <= 0) - goto fail; - - wpath = alloc_array(sizeof(wpath[0]), length); - if (wpath == NULL) { - perror(name); + wpath = path_to_windows(name); + if (wpath == NULL) return -1; - } - - MultiByteToWideChar(CP_UTF8, 0, name, -1, wpath, length); - wpath[length - 1] = '\0'; switch (n->inode->base.mode & S_IFMT) { case S_IFDIR: |