From 7ea8f49a64e82f3d6b4446a8f70f6c3797da36dd Mon Sep 17 00:00:00 2001 From: pierantoniomerlino Date: Fri, 21 Dec 2018 17:08:35 +0100 Subject: [PATCH 1/3] Added check for symlink Signed-off-by: pierantoniomerlino --- .../eclipse/kura/linux/net/dns/LinuxDns.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java b/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java index 10af73d27c4..7c211f694a3 100644 --- a/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java +++ b/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java @@ -16,7 +16,10 @@ import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; +import java.io.IOException; import java.io.PrintWriter; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -367,6 +370,17 @@ private synchronized String getRealPath(File file) throws KuraException { private synchronized void writeDnsFile(Set servers) { logger.debug("Writing DNS servers to file"); + // Check if DNS_FILE_NAME is a symlink and it is broken or points to unmanaged location. + // In this case, delete it. + try { + if (Files.isSymbolicLink(Paths.get(DNS_FILE_NAME)) + && !Files.readSymbolicLink(Paths.get(DNS_FILE_NAME)).equals(Paths.get(getPppDnsFileName()))) { + Files.delete(Paths.get(DNS_FILE_NAME)); + } + } catch (IOException e) { + logger.error("Cannot read symlink", e); + } + try (FileOutputStream fos = new FileOutputStream(DNS_FILE_NAME); PrintWriter pw = new PrintWriter(fos);) { String[] existingFile = getModifiedFile(); for (String element : existingFile) { @@ -378,8 +392,8 @@ private synchronized void writeDnsFile(Set servers) { } pw.flush(); fos.getFD().sync(); - } catch (Exception e) { - logger.error("writeDnsFile() :: failed to write the {} file ", DNS_FILE_NAME, e); + } catch (Exception e1) { + logger.error("writeDnsFile() :: failed to write the {} file ", DNS_FILE_NAME, e1); } } From d3939aa3ee60cccb7f0cb7f93fd00f24e729ce3b Mon Sep 17 00:00:00 2001 From: nicolatimeus Date: Mon, 7 Jan 2019 14:45:34 +0100 Subject: [PATCH 2/3] Fixed possible NPE Signed-off-by: nicolatimeus --- kura/distrib/config/kura.build.properties | 2 +- .../org/eclipse/kura/linux/net/dns/LinuxDns.java | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/kura/distrib/config/kura.build.properties b/kura/distrib/config/kura.build.properties index 828f9f26d48..4a97d649e55 100644 --- a/kura/distrib/config/kura.build.properties +++ b/kura/distrib/config/kura.build.properties @@ -42,7 +42,7 @@ org.eclipse.kura.ble.provider.version=1.0.300-SNAPSHOT org.eclipse.kura.ble.ibeacon.provider.version=1.0.200 org.eclipse.kura.ble.eddystone.provider.version=1.0.200 org.eclipse.kura.linux.command.version=1.0.300 -org.eclipse.kura.linux.net.version=1.0.400 +org.eclipse.kura.linux.net.version=1.0.500-SNAPSHOT org.eclipse.kura.linux.sysv.provider.version=1.0.0 org.eclipse.kura.linux.systemd.provider.version=1.0.0 org.eclipse.kura.linux.debian.provider.version=1.0.0 diff --git a/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java b/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java index 7c211f694a3..4bdd69fe386 100644 --- a/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java +++ b/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011, 2017 Eurotech and/or its affiliates + * Copyright (c) 2011, 2019 Eurotech and/or its affiliates * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -368,13 +368,22 @@ private synchronized String getRealPath(File file) throws KuraException { return path; } + private boolean isLinkToPppDnsFile(final String dnsFileName) throws IOException { + final String pppDnsFileName = getPppDnsFileName(); + + if (pppDnsFileName == null) { + return false; + } + + return Files.readSymbolicLink(Paths.get(DNS_FILE_NAME)).equals(Paths.get(pppDnsFileName)); + } + private synchronized void writeDnsFile(Set servers) { logger.debug("Writing DNS servers to file"); // Check if DNS_FILE_NAME is a symlink and it is broken or points to unmanaged location. // In this case, delete it. try { - if (Files.isSymbolicLink(Paths.get(DNS_FILE_NAME)) - && !Files.readSymbolicLink(Paths.get(DNS_FILE_NAME)).equals(Paths.get(getPppDnsFileName()))) { + if (Files.isSymbolicLink(Paths.get(DNS_FILE_NAME)) && !isLinkToPppDnsFile(DNS_FILE_NAME)) { Files.delete(Paths.get(DNS_FILE_NAME)); } } catch (IOException e) { From ee6b87b6d81bda4e13afc6a5dd359839ea081b74 Mon Sep 17 00:00:00 2001 From: pierantoniomerlino Date: Mon, 7 Jan 2019 15:06:47 +0100 Subject: [PATCH 3/3] Removed useless comments Signed-off-by: pierantoniomerlino --- .../src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java b/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java index 4bdd69fe386..7f563f50509 100644 --- a/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java +++ b/kura/org.eclipse.kura.linux.net/src/main/java/org/eclipse/kura/linux/net/dns/LinuxDns.java @@ -380,8 +380,6 @@ private boolean isLinkToPppDnsFile(final String dnsFileName) throws IOException private synchronized void writeDnsFile(Set servers) { logger.debug("Writing DNS servers to file"); - // Check if DNS_FILE_NAME is a symlink and it is broken or points to unmanaged location. - // In this case, delete it. try { if (Files.isSymbolicLink(Paths.get(DNS_FILE_NAME)) && !isLinkToPppDnsFile(DNS_FILE_NAME)) { Files.delete(Paths.get(DNS_FILE_NAME));