diff --git a/server/src/main/java/com/cloud/user/DomainManagerImpl.java b/server/src/main/java/com/cloud/user/DomainManagerImpl.java index 28f9bd3ab391..b74cbbc01340 100644 --- a/server/src/main/java/com/cloud/user/DomainManagerImpl.java +++ b/server/src/main/java/com/cloud/user/DomainManagerImpl.java @@ -90,6 +90,7 @@ import com.cloud.storage.dao.VolumeDao; import com.cloud.user.dao.AccountDao; import com.cloud.utils.Pair; +import com.cloud.utils.StringUtils; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.DB; import com.cloud.utils.db.Filter; @@ -106,8 +107,6 @@ import com.cloud.vm.ReservationContextImpl; import com.cloud.vm.dao.VMInstanceDao; -import org.apache.commons.lang3.StringUtils; - @Component public class DomainManagerImpl extends ManagerBase implements DomainManager, DomainService { @@ -938,7 +937,7 @@ private void updateDomainChildren(DomainVO domain, String updatedDomainPrefix) { List domainChildren = _domainDao.findAllChildren(domain.getPath(), domain.getId()); // for each child, update the path for (DomainVO dom : domainChildren) { - dom.setPath(dom.getPath().replaceFirst(domain.getPath(), updatedDomainPrefix)); + dom.setPath(StringUtils.replaceOnce(dom.getPath(), domain.getPath(), updatedDomainPrefix)); _domainDao.update(dom.getId(), dom); } } @@ -1074,7 +1073,7 @@ protected void validateNewParentDomainCanAccessResourcesOfDomainToBeMoved(String for (Map.Entry> entry : idsOfDomainsWithResourcesUsedByDomainToBeMoved.entrySet()) { DomainVO domainWithResourceUsedByDomainToBeMoved = _domainDao.findById(entry.getKey()); - Pattern pattern = Pattern.compile(domainWithResourceUsedByDomainToBeMoved.getPath().replace("/", "\\/").concat(".*")); + Pattern pattern = Pattern.compile(domainWithResourceUsedByDomainToBeMoved.getPath().replace("/", "\\/").concat(".*")); // This only scaped one Regex metacharacter (/). The wildcard `.` is more common and dangerous in my opinion. Matcher matcher = pattern.matcher(newPathOfDomainToBeMoved); if (!matcher.matches()) { domainsOfResourcesInaccessibleToNewParentDomain.put(domainWithResourceUsedByDomainToBeMoved, entry.getValue());