[
https://issues.apache.org/jira/browse/CLOUDSTACK-10356?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
lujie updated CLOUDSTACK-10356:
-------------------------------
Description:
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 _Unable to render
embedded object: File (=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!!!!
was:
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!!!!
> 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
>
> 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 _Unable to render
> embedded object: File (=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)