Hi,

Please find the latest report on new defect(s) introduced to cloudstack found 
with Coverity Scan.

4 new defect(s) introduced to cloudstack found with Coverity Scan.


New defect(s) Reported-by: Coverity Scan
Showing 4 of 4 defect(s)


** CID 1147055:  Null pointer dereferences  (REVERSE_INULL)
/server/src/com/cloud/storage/VolumeApiServiceImpl.java: 2204 in 
com.cloud.storage.VolumeApiServiceImpl.extractVolume(org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd)()


________________________________________________________________________________________________________
*** CID 1147055:  Null pointer dereferences  (REVERSE_INULL)
/server/src/com/cloud/storage/VolumeApiServiceImpl.java: 2204 in 
com.cloud.storage.VolumeApiServiceImpl.extractVolume(org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd)()
2198     
2199                 VMTemplateVO template = 
ApiDBUtils.findTemplateById(volume.getTemplateId());
2200                 if (template != null) { // For ISO based volumes template 
= null and
2201                     // we allow extraction of all ISO based
2202                     // volumes
2203                     boolean isExtractable = template.isExtractable() && 
template.getTemplateType() != Storage.TemplateType.SYSTEM;
>>>     CID 1147055:  Null pointer dereferences  (REVERSE_INULL)
>>>     Null-checking "account" suggests that it may be null, but it has 
>>> already been dereferenced on all paths leading to the check.
2204                     if (!isExtractable && account != null && 
!_accountMgr.isRootAdmin(account.getId())) {
2205                         // Global admins are always allowed to extract
2206                         PermissionDeniedException ex = new 
PermissionDeniedException("The volume with specified volumeId is not allowed to 
be extracted");
2207                         ex.addProxyObject(volume.getUuid(), "volumeId");
2208                         throw ex;
2209                     }

** CID 1192794:    (REVERSE_INULL)
/server/src/com/cloud/api/query/QueryManagerImpl.java: 2959 in 
com.cloud.api.query.QueryManagerImpl.listDataCentersInternal(org.apache.cloudstack.api.command.user.zone.ListZonesCmd)()
/server/src/com/cloud/api/query/QueryManagerImpl.java: 2959 in 
com.cloud.api.query.QueryManagerImpl.listDataCentersInternal(org.apache.cloudstack.api.command.user.zone.ListZonesCmd)()


________________________________________________________________________________________________________
*** CID 1192794:    (REVERSE_INULL)
/server/src/com/cloud/api/query/QueryManagerImpl.java: 2959 in 
com.cloud.api.query.QueryManagerImpl.listDataCentersInternal(org.apache.cloudstack.api.command.user.zone.ListZonesCmd)()
2953                     }
2954                 }
2955     
2956                 // handle available=FALSE option, only return zones with 
at least
2957                 // one VM running there
2958                 Boolean available = cmd.isAvailable();
>>>     CID 1192794:    (REVERSE_INULL)
>>>     Null-checking "account" suggests that it may be null, but it has 
>>> already been dereferenced on all paths leading to the check.
2959                 if (account != null) {
2960                     if ((available != null) && 
Boolean.FALSE.equals(available)) {
2961                         Set<Long> dcIds = new HashSet<Long>(); // data 
centers with
2962                         // at least one VM
2963                         // running
2964                         List<DomainRouterVO> routers = 
_routerDao.listBy(account.getId());
/server/src/com/cloud/api/query/QueryManagerImpl.java: 2959 in 
com.cloud.api.query.QueryManagerImpl.listDataCentersInternal(org.apache.cloudstack.api.command.user.zone.ListZonesCmd)()
2953                     }
2954                 }
2955     
2956                 // handle available=FALSE option, only return zones with 
at least
2957                 // one VM running there
2958                 Boolean available = cmd.isAvailable();
>>>     CID 1192794:    (REVERSE_INULL)
>>>     Null-checking "account" suggests that it may be null, but it has 
>>> already been dereferenced on all paths leading to the check.
2959                 if (account != null) {
2960                     if ((available != null) && 
Boolean.FALSE.equals(available)) {
2961                         Set<Long> dcIds = new HashSet<Long>(); // data 
centers with
2962                         // at least one VM
2963                         // running
2964                         List<DomainRouterVO> routers = 
_routerDao.listBy(account.getId());

** CID 1349986:  FindBugs: Dodgy code  (FB.DLS_DEAD_LOCAL_STORE)
/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xen610/XenServer610MigrateWithStorageSendCommandWrapper.java:
 76 in 
com.cloud.hypervisor.xenserver.resource.wrapper.xen610.XenServer610MigrateWithStorageSendCommandWrapper.execute(com.cloud.agent.api.MigrateWithStorageSendCommand,
 com.cloud.hypervisor.xenserver.resource.XenServer610Resource)()


________________________________________________________________________________________________________
*** CID 1349986:  FindBugs: Dodgy code  (FB.DLS_DEAD_LOCAL_STORE)
/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xen610/XenServer610MigrateWithStorageSendCommandWrapper.java:
 76 in 
com.cloud.hypervisor.xenserver.resource.wrapper.xen610.XenServer610MigrateWithStorageSendCommandWrapper.execute(com.cloud.agent.api.MigrateWithStorageSendCommand,
 com.cloud.hypervisor.xenserver.resource.XenServer610Resource)()
70                 // happens when the host/resource on which the command has 
to be executed is owned
71                 // by the second management server. The 
serialization/deserialization of the command
72                 // and answers fails as the xapi SR and Network class type 
isn't understand by the
73                 // agent attache. Seriliaze the SR and Network objects here 
to a string and pass in
74                 // the answer object. It'll be deserialzed and object 
created in migrate with
75                 // storage send command execution.
>>>     CID 1349986:  FindBugs: Dodgy code  (FB.DLS_DEAD_LOCAL_STORE)
>>>     Dead store to gson
76                 Gson gson = new Gson();
77                 final Map<String, String> other = new HashMap<String, 
String>();
78                 other.put("live", "true");
79     
80                 // Create the vdi map which tells what volumes of the vm 
need to go
81                 // on which sr on the destination.

** CID 1349987:  FindBugs: Dodgy code  (FB.DLS_DEAD_LOCAL_STORE)
/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xen610/XenServer610MigrateWithStorageReceiveCommandWrapper.java:
 70 in 
com.cloud.hypervisor.xenserver.resource.wrapper.xen610.XenServer610MigrateWithStorageReceiveCommandWrapper.execute(com.cloud.agent.api.MigrateWithStorageReceiveCommand,
 com.cloud.hypervisor.xenserver.resource.XenServer610Resource)()


________________________________________________________________________________________________________
*** CID 1349987:  FindBugs: Dodgy code  (FB.DLS_DEAD_LOCAL_STORE)
/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xen610/XenServer610MigrateWithStorageReceiveCommandWrapper.java:
 70 in 
com.cloud.hypervisor.xenserver.resource.wrapper.xen610.XenServer610MigrateWithStorageReceiveCommandWrapper.execute(com.cloud.agent.api.MigrateWithStorageReceiveCommand,
 com.cloud.hypervisor.xenserver.resource.XenServer610Resource)()
64                 // happens when the host/resource on which the command has 
to be executed is owned
65                 // by the second management server. The 
serialization/deserialization of the command
66                 // and answers fails as the xapi SR and Network class type 
isn't understand by the
67                 // agent attache. Seriliaze the SR and Network objects here 
to a string and pass in
68                 // the answer object. It'll be deserialzed and object 
created in migrate with
69                 // storage send command execution.
>>>     CID 1349987:  FindBugs: Dodgy code  (FB.DLS_DEAD_LOCAL_STORE)
>>>     Dead store to gson
70                 Gson gson = new Gson();
71                 // Get a map of all the SRs to which the vdis will be 
migrated.
72                 final List<Pair<VolumeTO, Object>> volumeToSr = new 
ArrayList<Pair<VolumeTO, Object>>();
73                 for (final Pair<VolumeTO, StorageFilerTO> entry : 
volumeToFiler) {
74                     final StorageFilerTO storageFiler = entry.second();
75                     final SR sr = 
xenServer610Resource.getStorageRepository(connection, storageFiler.getUuid());


________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, 
https://scan.coverity.com/projects/cloudstack?tab=overview

To manage Coverity Scan email notifications for "dev@cloudstack.apache.org", 
click 
https://scan.coverity.com/subscriptions/edit?email=dev%40cloudstack.apache.org&token=494aabd5ba647999fa41b6d766646231

Reply via email to