It was possible for ntfs_attr_name_get() to set errno due to a wide
character string that could not be converted to a multibyte string.  This
caused ntfs_delete() to fail.

Fix by checking for a nonzero return value specifically from
ntfs_attr_lookup(), rather than assuming that nothing else sets errno.

Signed-off-by: Eric Biggers <[email protected]>
---
 libntfs-3g/dir.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/libntfs-3g/dir.c b/libntfs-3g/dir.c
index ce69eaf..bd049d2 100644
--- a/libntfs-3g/dir.c
+++ b/libntfs-3g/dir.c
@@ -1904,12 +1904,11 @@ int ntfs_delete(ntfs_volume *vol, const char *pathname,
        if (!actx)
                goto err_out;
 search:
-       while (!ntfs_attr_lookup(AT_FILE_NAME, AT_UNNAMED, 0, CASE_SENSITIVE,
-                       0, NULL, 0, actx)) {
+       while (!(err = ntfs_attr_lookup(AT_FILE_NAME, AT_UNNAMED, 0,
+                                       CASE_SENSITIVE, 0, NULL, 0, actx))) {
                char *s;
                IGNORE_CASE_BOOL case_sensitive = IGNORE_CASE;
 
-               errno = 0;
                fn = (FILE_NAME_ATTR*)((u8*)actx->attr +
                                le16_to_cpu(actx->attr->value_offset));
                s = ntfs_attr_name_get(fn->file_name, fn->file_name_length);
@@ -1958,7 +1957,7 @@ search:
                        break;
                }
        }
-       if (errno) {
+       if (err) {
                /*
                 * If case sensitive search failed, then try once again
                 * ignoring case.
-- 
2.9.0


------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
http://sdm.link/attshape
_______________________________________________
ntfs-3g-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ntfs-3g-devel

Reply via email to