From: Yan, Zheng Date: Wed, 11 Apr 2018 03:00:59 +0000 (+0800) Subject: mds: validate SnapInfo::long_name before using it X-Git-Tag: v13.1.0~2^2~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=07e7007d0d7fcb20a92a98a0c7e5d4855c795cd6;p=ceph.git mds: validate SnapInfo::long_name before using it SnapInfo::long_name becomes invalid after rename snapshot Signed-off-by: "Yan, Zheng" --- diff --git a/src/mds/snap.cc b/src/mds/snap.cc index 1090180be7ea..dc913f3ed16f 100644 --- a/src/mds/snap.cc +++ b/src/mds/snap.cc @@ -70,7 +70,9 @@ ostream& operator<<(ostream& out, const SnapInfo &sn) std::string_view SnapInfo::get_long_name() const { - if (long_name.length() == 0) { + if (long_name.empty() || + long_name.compare(1, name.size(), name) || + long_name.find_last_of("_") != name.size() + 1) { char nm[80]; snprintf(nm, sizeof(nm), "_%s_%llu", name.c_str(), (unsigned long long)ino); long_name = nm;