From 2db3226555567f73a833a6d832aa77099c9de3ec Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Fri, 20 Jun 2014 11:54:34 +0200 Subject: [PATCH] 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 --- NEWS | 1 + libatalk/util/netatalk_conf.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) 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); } -- 2.39.2