[ https://issues.apache.org/jira/browse/CLOUDSTACK-10356?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16453986#comment-16453986 ]
ASF subversion and git services commented on CLOUDSTACK-10356: -------------------------------------------------------------- Commit 4c42aafae0d3286a38d796a7c69a6aec6810cf79 in cloudstack's branch refs/heads/master from brett [ https://gitbox.apache.org/repos/asf?p=cloudstack.git;h=4c42aaf ] [CLOUDSTACK-10356] Fix NPE in Cloudstack found with NPEDetector (#2573) * fix https://issues.apache.org/jira/browse/CLOUDSTACK-10356 * del patch file * Update ResourceCountDaoImpl.java * fix some format * fix code * fix error message in VolumeOrchestrator * add check null stmt * del import unuse class * use BooleanUtils to check Boolean * fix error message * delete unuse function * delete the deprecated function updateDomainCount * add error log and throw exception in ProjectManagerImpl.java > Fix Some Potential NPE > ----------------------- > > Key: CLOUDSTACK-10356 > URL: https://issues.apache.org/jira/browse/CLOUDSTACK-10356 > Project: CloudStack > Issue Type: Bug > Security Level: Public(Anyone can view this level - this is the > default.) > Affects Versions: 4.12.0.0 > Reporter: lujie > Priority: Major > Attachments: CLOUDSTACK-10356_1.patch > > > We have developed a static analysis tool > [NPEDetector|https://github.com/lujiefsi/NPEDetector] to find some potential > NPE. Our analysis shows that some callees may return null in corner case(e.g. > node crash , IO exception), some of their callers have _!=null_ check but > some do not have. In this issue we post a patch which can add !=null based > on existed !=null check. For example: > Callee GlobalLoadBalancingRulesServiceImpl#lookupGslbServiceProvider: > {code:java} > protected GslbServiceProvider lookupGslbServiceProvider() { > return _gslbProviders.size() == 0 ? null : _gslbProviders.get(0);// may > return null; > } > {code} > Caller GlobalLoadBalancingRulesServiceImpl#checkGslbServiceEnabledInZone have > _!=null_: > {code:java} > private boolean checkGslbServiceEnabledInZone(long zoneId, long > physicalNetworkId) { > GslbServiceProvider gslbProvider = lookupGslbServiceProvider(); > if (gslbProvider == null) { > throw new CloudRuntimeException("No GSLB provider is available"); > } > return gslbProvider.isServiceEnabledInZone(zoneId, physicalNetworkId); > } > {code} > but another > GlobalLoadBalancingRulesServiceImpl#applyGlobalLoadBalancerRuleConfig does > not have !=null check: > {code:java} > GslbServiceProvider gslbProvider = lookupGslbServiceProvider(); > siteLb.setGslbProviderPublicIp(gslbProvider.getZoneGslbProviderPublicIp(dataCenterId,physicalNetworkId)); > .........{code} > So we will add below code in non-(!=null) caller > GlobalLoadBalancingRulesServiceImpl#applyGlobalLoadBalancerRuleConfig > {code:java} > if (gslbProvider == null) { > throw new CloudRuntimeException("No GSLB provider is available"); > } > {code} > But due to we are not very familiar with CLOUDSTACK, hope some expert can > review it. > Thanks!!!! -- This message was sent by Atlassian JIRA (v7.6.3#76005)