From: Ralph Boehme Date: Fri, 20 Jun 2014 09:54:34 +0000 (+0200) Subject: ad: path detection in getvolbypath(), bug #570 X-Git-Url: https://arthur.barton.de/gitweb/?p=netatalk.git;a=commitdiff_plain;h=2db3226555567f73a833a6d832aa77099c9de3ec ad: path detection in getvolbypath(), bug #570 The fix for bug #563 broke ad file utilities, bug #570. Authored-by: gaaronk Reviewed-by: Ralph Boehme --- diff --git a/NEWS b/NEWS index 9299f4f2..f6c36473 100644 --- 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 ================ diff --git a/libatalk/util/netatalk_conf.c b/libatalk/util/netatalk_conf.c index 32bda78a..2e1812dd 100644 --- a/libatalk/util/netatalk_conf.c +++ b/libatalk/util/netatalk_conf.c @@ -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); }