From 2aafc237748259e960f6c0e237e3f6793489f1ad Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Wed, 6 May 2015 01:51:57 +0000
Subject: [PATCH] PrintWriter doesn't throw exceptions, so call checkError()

---
 apps/i2psnark/java/src/org/klomp/snark/dht/PersistDHT.java   | 2 ++
 .../susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java | 2 ++
 core/java/src/net/i2p/crypto/CertUtil.java                   | 2 ++
 core/java/src/net/i2p/data/DataHelper.java                   | 5 +++++
 router/java/src/net/i2p/router/startup/WorkingDir.java       | 2 ++
 5 files changed, 13 insertions(+)

diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/PersistDHT.java b/apps/i2psnark/java/src/org/klomp/snark/dht/PersistDHT.java
index 8ecd111ef7..2848b00909 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/dht/PersistDHT.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/dht/PersistDHT.java
@@ -87,6 +87,8 @@ abstract class PersistDHT {
                  out.println(ni.toPersistentString());
                  count++;
             }
+            if (out.checkError())
+                throw new IOException("Failed write to " + file);
         } catch (IOException ioe) {
             if (log.shouldLog(Log.WARN))
                 log.warn("Error writing the DHT File", ioe);
diff --git a/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java b/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java
index 15d394336e..ec869f6255 100644
--- a/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java
+++ b/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java
@@ -112,6 +112,8 @@ public class SubscriptionsBean extends BaseBean
 				out.println(url);
 			}
 			out.close();
+                        if (out.checkError())
+                            throw new IOException("Failed write to " + file);
 		} catch (IOException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
diff --git a/core/java/src/net/i2p/crypto/CertUtil.java b/core/java/src/net/i2p/crypto/CertUtil.java
index aa484a5226..4d85aa6917 100644
--- a/core/java/src/net/i2p/crypto/CertUtil.java
+++ b/core/java/src/net/i2p/crypto/CertUtil.java
@@ -53,6 +53,8 @@ public class CertUtil {
            }
            wr.println("-----END CERTIFICATE-----");
            wr.flush();
+           if (wr.checkError())
+               throw new IOException("Failed write to " + file);
            return true;
         } catch (CertificateEncodingException cee) {
             error("Error writing X509 Certificate " + file.getAbsolutePath(), cee);
diff --git a/core/java/src/net/i2p/data/DataHelper.java b/core/java/src/net/i2p/data/DataHelper.java
index ffa1d2577d..55e15727d9 100644
--- a/core/java/src/net/i2p/data/DataHelper.java
+++ b/core/java/src/net/i2p/data/DataHelper.java
@@ -529,6 +529,11 @@ public class DataHelper {
             out.flush();
             fos.getFD().sync();
             out.close();
+            if (out.checkError()) {
+                out = null;
+                tmpFile.delete();
+                throw new IOException("Failed to write properties to " + tmpFile);
+            }
             out = null;
             if (!FileUtil.rename(tmpFile, file))
                 throw new IOException("Failed rename from " + tmpFile + " to " + file);
diff --git a/router/java/src/net/i2p/router/startup/WorkingDir.java b/router/java/src/net/i2p/router/startup/WorkingDir.java
index 3be6b6309f..b8503224f6 100644
--- a/router/java/src/net/i2p/router/startup/WorkingDir.java
+++ b/router/java/src/net/i2p/router/startup/WorkingDir.java
@@ -322,6 +322,8 @@ public class WorkingDir {
                 out.println(s);
             }
             System.err.println("Copied " + oldFile + " with modifications");
+            if (out.checkError())
+                throw new IOException("Failed write to " + newFile);
             return true;
         } catch (IOException ioe) {
             if (in != null) {
-- 
GitLab