Repository: cloudstack
Updated Branches:
  refs/heads/master 880f186ed -> 88d4fe8a0


 Fixed CLOUDSTACK-7091 VM VNC password should be securely generated


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/88d4fe8a
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/88d4fe8a
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/88d4fe8a

Branch: refs/heads/master
Commit: 88d4fe8a0bd9874e695de41d7a1419b7d24e0301
Parents: 880f186
Author: Rajesh Battala <[email protected]>
Authored: Fri Aug 1 12:01:46 2014 +0530
Committer: Rajesh Battala <[email protected]>
Committed: Fri Aug 1 13:09:27 2014 +0530

----------------------------------------------------------------------
 engine/schema/src/com/cloud/vm/VMInstanceVO.java | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/88d4fe8a/engine/schema/src/com/cloud/vm/VMInstanceVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/vm/VMInstanceVO.java 
b/engine/schema/src/com/cloud/vm/VMInstanceVO.java
index c1190dc..d542f33 100644
--- a/engine/schema/src/com/cloud/vm/VMInstanceVO.java
+++ b/engine/schema/src/com/cloud/vm/VMInstanceVO.java
@@ -16,9 +16,10 @@
 // under the License.
 package com.cloud.vm;
 
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
 import java.util.Date;
 import java.util.Map;
-import java.util.Random;
 import java.util.UUID;
 
 import javax.persistence.Column;
@@ -36,6 +37,9 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 import javax.persistence.Transient;
 
+import org.apache.commons.codec.binary.Base64;
+import org.apache.log4j.Logger;
+
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.utils.db.Encrypt;
 import com.cloud.utils.db.GenericDao;
@@ -48,6 +52,7 @@ import com.cloud.vm.VirtualMachine.State;
 @Inheritance(strategy = InheritanceType.JOINED)
 @DiscriminatorColumn(name = "type", discriminatorType = 
DiscriminatorType.STRING, length = 32)
 public class VMInstanceVO implements VirtualMachine, FiniteStateObject<State, 
VirtualMachine.Event> {
+    private static final Logger s_logger = 
Logger.getLogger(VMInstanceVO.class);
     @Id
     @TableGenerator(name = "vm_instance_sq", table = "sequence", pkColumnName 
= "name", valueColumnName = "value", pkColumnValue = "vm_instance_seq", 
allocationSize = 1)
     @Column(name = "id", updatable = false, nullable = false)
@@ -191,13 +196,20 @@ public class VMInstanceVO implements VirtualMachine, 
FiniteStateObject<State, Vi
         this.type = type;
         this.guestOSId = guestOSId;
         this.haEnabled = haEnabled;
-        vncPassword = Long.toHexString(new Random().nextLong());
         state = State.Stopped;
         this.accountId = accountId;
         this.domainId = domainId;
         this.serviceOfferingId = serviceOfferingId;
         this.hypervisorType = hypervisorType;
         limitCpuUse = false;
+        try {
+            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
+            byte[] randomBytes = new byte[16];
+            random.nextBytes(randomBytes);
+            vncPassword = Base64.encodeBase64String(randomBytes);
+        } catch (NoSuchAlgorithmException e) {
+            s_logger.error("Unexpected exception in SecureRandom Algorithm 
selection ", e);
+        }
     }
 
     public VMInstanceVO(long id, long serviceOfferingId, String name, String 
instanceName, Type type, Long vmTemplateId, HypervisorType hypervisorType, long 
guestOSId,

Reply via email to