]> arthur.barton.de Git - netatalk.git/commitdiff
ad: path detection in getvolbypath(), bug #570
authorRalph Boehme <rb@sernet.de>
Fri, 20 Jun 2014 09:54:34 +0000 (11:54 +0200)
committerRalph Boehme <rb@sernet.de>
Fri, 20 Jun 2014 09:54:34 +0000 (11:54 +0200)
The fix for bug #563 broke ad file utilities, bug #570.

Authored-by: gaaronk
Reviewed-by: Ralph Boehme <rb@sernet.de>
NEWS
libatalk/util/netatalk_conf.c

diff --git a/NEWS b/NEWS
index 9299f4f2b58690ec7cc1ac2e8e6b2cf0e9979421..f6c3647388bcb18be88fd59163f38ca7d3b57892 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,7 @@ Changes in 3.1.3
        the resource fork. In some circumstances an offset calculation
        is wrong resulting in corrupt resource forks after the
        conversion. Bug #568.
+* FIX: ad: fix for bug #563 broke ad file utilities, bug #570.
 
 Changes in 3.1.2
 ================
index 32bda78ab9fd4786fcd34276ab466ec22fc2b71d..2e1812ddcc0e3cc38aa3f09ec42dbe916421147b 100644 (file)
@@ -1632,10 +1632,15 @@ struct vol *getvolbypath(AFPObj *obj, const char *path)
     }
 
     for (tmp = Volumes; tmp; tmp = tmp->v_next) { /* (1) */
-        if (strcmp(path, tmp->v_path) == 0) {
-            LOG(log_debug, logtype_afpd, "getvolbypath: path(\"%s\") == volume(\"%s\")", path, tmp->v_path);
-            vol = tmp;
-            goto EC_CLEANUP;
+        size_t v_path_len = strlen(tmp->v_path);
+        if (strncmp(path, tmp->v_path, v_path_len) == 0) {
+            if (v_path_len < strlen(path) && path[v_path_len] != '/') {
+                LOG(log_debug, logtype_afpd, "getvolbypath: path(\"%s\") != volume(\"%s\")", path, tmp->v_path);
+            } else {
+                LOG(log_debug, logtype_afpd, "getvolbypath: path(\"%s\") == volume(\"%s\")", path, tmp->v_path);
+                vol = tmp;
+                goto EC_CLEANUP;
+            }
         } else {
             LOG(log_debug, logtype_afpd, "getvolbypath: path(\"%s\") != volume(\"%s\")", path, tmp->v_path);
         }