From 28e686114d3a851a8f3163862b0c4ec4de3eacce Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Thu, 10 Jul 2014 22:23:47 +0200 Subject: [PATCH] Serials are in fact Strings. --- src/org/cacert/gigi/Certificate.java | 18 +++++++++++---- .../gigi/pages/account/MailCertificates.java | 23 ++++--------------- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/org/cacert/gigi/Certificate.java b/src/org/cacert/gigi/Certificate.java index 378b3a70..efe5aec5 100644 --- a/src/org/cacert/gigi/Certificate.java +++ b/src/org/cacert/gigi/Certificate.java @@ -18,7 +18,7 @@ import org.cacert.gigi.util.KeyStorage; public class Certificate { private int id; private int ownerId; - private int serial; + private String serial; private String dn; private String md; private String csrName; @@ -32,11 +32,11 @@ public class Certificate { this.csr = csr; } - public Certificate(int serial) { + private Certificate(String serial) { try { PreparedStatement ps = DatabaseConnection.getInstance().prepare( "SELECT id,subject, md, csr_name, crt_name,memid FROM `emailcerts` WHERE serial=?"); - ps.setInt(1, serial); + ps.setString(1, serial); ResultSet rs = ps.executeQuery(); if (!rs.next()) { throw new IllegalArgumentException("Invalid mid " + serial); @@ -214,7 +214,7 @@ public class Certificate { return id; } - public int getSerial() { + public String getSerial() { return serial; } @@ -230,4 +230,14 @@ public class Certificate { return ownerId; } + public static Certificate getBySerial(String serial) { + // TODO caching? + try { + return new Certificate(serial); + } catch (IllegalArgumentException e) { + + } + return null; + } + } diff --git a/src/org/cacert/gigi/pages/account/MailCertificates.java b/src/org/cacert/gigi/pages/account/MailCertificates.java index e0dd947a..56a0b5bd 100644 --- a/src/org/cacert/gigi/pages/account/MailCertificates.java +++ b/src/org/cacert/gigi/pages/account/MailCertificates.java @@ -45,16 +45,10 @@ public class MailCertificates extends Page { cer = true; pi = pi.substring(0, pi.length() - 4); } - int serial = 0; + String serial = pi; try { - serial = Integer.parseInt(pi); - } catch (NumberFormatException nfe) { - resp.sendError(404); - return true; - } - try { - Certificate c = new Certificate(serial); - if (LoginPage.getUser(req).getId() != c.getOwnerId()) { + Certificate c = Certificate.getBySerial(serial); + if (c == null || LoginPage.getUser(req).getId() != c.getOwnerId()) { resp.sendError(404); return true; } @@ -92,15 +86,8 @@ public class MailCertificates extends Page { if (pi.length() != 0) { pi = pi.substring(1); - int serial = 0; - try { - serial = Integer.parseInt(pi); - } catch (NumberFormatException nfe) { - } - Certificate c = null; - if (serial != 0) { - c = new Certificate(serial); - } + String serial = pi; + Certificate c = Certificate.getBySerial(serial); if (c == null || LoginPage.getUser(req).getId() != c.getOwnerId()) { resp.sendError(404); return; -- 2.39.2