git://wimlib.net
/
wimlib
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b6034a5
)
wimlib_iterate_dir_tree(): Canonicalize WIM path
author
Eric Biggers
<ebiggers3@gmail.com>
Wed, 8 Jan 2014 02:32:39 +0000
(20:32 -0600)
committer
Eric Biggers
<ebiggers3@gmail.com>
Wed, 8 Jan 2014 02:32:39 +0000
(20:32 -0600)
NEWS
patch
|
blob
|
history
src/dentry.c
patch
|
blob
|
history
diff --git
a/NEWS
b/NEWS
index 0f28b5c3c88a2f2a96bbec6587f5b95b457e334d..8dae65d6c025b8daff21c9b954d194d356ce2adf 100644
(file)
--- a/
NEWS
+++ b/
NEWS
@@
-6,8
+6,8
@@
Version 1.6.1:
Stored files with size exactly 4 GiB (4,294,967,296 bytes) are now
decompressed correctly.
Stored files with size exactly 4 GiB (4,294,967,296 bytes) are now
decompressed correctly.
- Paths passed to wimlib_extract_paths()
may now use either forwards or
- backwards slashes, as documented.
+ Paths passed to wimlib_extract_paths()
and wimlib_iterate_dir_tree() may
+
now use either forwards or
backwards slashes, as documented.
Fixed a potential stack overflow when extracting solid archives (packed
streams) containing more than about 100000 files.
Fixed a potential stack overflow when extracting solid archives (packed
streams) containing more than about 100000 files.
diff --git
a/src/dentry.c
b/src/dentry.c
index e87bfefc0b46046ecdef6622e24e9f7f5933e191..b18375fecbddae95dea13ed203b20770b517d2f2 100644
(file)
--- a/
src/dentry.c
+++ b/
src/dentry.c
@@
-2705,10
+2705,16
@@
image_do_iterate_dir_tree(WIMStruct *wim)
/* API function documented in wimlib.h */
WIMLIBAPI int
/* API function documented in wimlib.h */
WIMLIBAPI int
-wimlib_iterate_dir_tree(WIMStruct *wim, int image, const tchar *path,
+wimlib_iterate_dir_tree(WIMStruct *wim, int image, const tchar *
_
path,
int flags,
wimlib_iterate_dir_tree_callback_t cb, void *user_ctx)
{
int flags,
wimlib_iterate_dir_tree_callback_t cb, void *user_ctx)
{
+ tchar *path;
+ int ret;
+
+ path = canonicalize_wim_path(_path);
+ if (path == NULL)
+ return WIMLIB_ERR_NOMEM;
struct image_iterate_dir_tree_ctx ctx = {
.path = path,
.flags = flags,
struct image_iterate_dir_tree_ctx ctx = {
.path = path,
.flags = flags,
@@
-2716,7
+2722,9
@@
wimlib_iterate_dir_tree(WIMStruct *wim, int image, const tchar *path,
.user_ctx = user_ctx,
};
wim->private = &ctx;
.user_ctx = user_ctx,
};
wim->private = &ctx;
- return for_image(wim, image, image_do_iterate_dir_tree);
+ ret = for_image(wim, image, image_do_iterate_dir_tree);
+ FREE(path);
+ return ret;
}
/* Returns %true iff the metadata of @inode and @template_inode are reasonably
}
/* Returns %true iff the metadata of @inode and @template_inode are reasonably