From: Felix Dörre Date: Thu, 19 Feb 2015 20:19:35 +0000 (+0100) Subject: FIX: race conditions by coverity. X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=0396bd9a17ee73f8dc3c0f8a4424424f3ce16ead FIX: race conditions by coverity. --- diff --git a/src/org/cacert/gigi/dbObjects/Certificate.java b/src/org/cacert/gigi/dbObjects/Certificate.java index ced044cd..9a857fe4 100644 --- a/src/org/cacert/gigi/dbObjects/Certificate.java +++ b/src/org/cacert/gigi/dbObjects/Certificate.java @@ -206,7 +206,7 @@ public class Certificate { } - public CertificateStatus getStatus() { + public synchronized CertificateStatus getStatus() { if (id == 0) { return CertificateStatus.DRAFT; } diff --git a/src/org/cacert/gigi/dbObjects/CertificateOwner.java b/src/org/cacert/gigi/dbObjects/CertificateOwner.java index d7439f2c..82143db5 100644 --- a/src/org/cacert/gigi/dbObjects/CertificateOwner.java +++ b/src/org/cacert/gigi/dbObjects/CertificateOwner.java @@ -41,10 +41,10 @@ public abstract class CertificateOwner implements IdCachable { } protected int insert() { - if (id != 0) { - throw new Error("refusing to insert"); - } synchronized (User.class) { + if (id != 0) { + throw new Error("refusing to insert"); + } GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO certOwners() VALUES()"); ps.execute(); id = ps.lastInsertId(); diff --git a/src/org/cacert/gigi/dbObjects/Domain.java b/src/org/cacert/gigi/dbObjects/Domain.java index c29d9b2b..8efa4ee1 100644 --- a/src/org/cacert/gigi/dbObjects/Domain.java +++ b/src/org/cacert/gigi/dbObjects/Domain.java @@ -168,10 +168,10 @@ public class Domain implements IdCachable { } public void insert() throws GigiApiException { - if (id != 0) { - throw new GigiApiException("already inserted."); - } synchronized (Domain.class) { + if (id != 0) { + throw new GigiApiException("already inserted."); + } checkInsert(suffix); GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `domains` SET memid=?, domain=?"); ps.setInt(1, owner.getId()); diff --git a/src/org/cacert/gigi/dbObjects/EmailAddress.java b/src/org/cacert/gigi/dbObjects/EmailAddress.java index b945f9ee..3ca39b6d 100644 --- a/src/org/cacert/gigi/dbObjects/EmailAddress.java +++ b/src/org/cacert/gigi/dbObjects/EmailAddress.java @@ -46,10 +46,10 @@ public class EmailAddress implements IdCachable { } public void insert(Language l) throws GigiApiException { - if (id != 0) { - throw new IllegalStateException("already inserted."); - } try { + if (id != 0) { + throw new IllegalStateException("already inserted."); + } GigiPreparedStatement psCheck = DatabaseConnection.getInstance().prepare("SELECT 1 FROM `emails` WHERE email=? AND deleted is NULL"); GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `emails` SET memid=?, hash=?, email=?"); ps.setInt(1, owner.getId());