HDFS-11048. Audit Log should escape control characters. Contributed by Eric Badger
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/8a9388e5 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/8a9388e5 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/8a9388e5 Branch: refs/heads/HDFS-10285 Commit: 8a9388e5f6d622152798aaaa256064919e4fec37 Parents: 1eae719 Author: Mingliang Liu <[email protected]> Authored: Fri Oct 28 10:53:14 2016 -0700 Committer: Mingliang Liu <[email protected]> Committed: Fri Oct 28 10:53:14 2016 -0700 ---------------------------------------------------------------------- .../apache/hadoop/hdfs/server/namenode/FSNamesystem.java | 3 +++ .../apache/hadoop/hdfs/server/namenode/TestAuditLogs.java | 9 +++++++++ 2 files changed, 12 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/8a9388e5/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index 3c782e2..d6ae0fa 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -17,6 +17,7 @@ */ package org.apache.hadoop.hdfs.server.namenode; +import static org.apache.commons.lang.StringEscapeUtils.escapeJava; import static org.apache.hadoop.fs.CommonConfigurationKeysPublic.FS_TRASH_INTERVAL_DEFAULT; import static org.apache.hadoop.fs.CommonConfigurationKeysPublic.FS_TRASH_INTERVAL_KEY; import static org.apache.hadoop.fs.CommonConfigurationKeysPublic.HADOOP_CALLER_CONTEXT_ENABLED_DEFAULT; @@ -6877,6 +6878,8 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, if (auditLog.isDebugEnabled() || (auditLog.isInfoEnabled() && !debugCmdSet.contains(cmd))) { final StringBuilder sb = STRING_BUILDER.get(); + src = escapeJava(src); + dst = escapeJava(dst); sb.setLength(0); sb.append("allowed=").append(succeeded).append("\t"); sb.append("ugi=").append(userName).append("\t"); http://git-wip-us.apache.org/repos/asf/hadoop/blob/8a9388e5/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestAuditLogs.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestAuditLogs.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestAuditLogs.java index 9b42cac..1033919 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestAuditLogs.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestAuditLogs.java @@ -270,6 +270,15 @@ public class TestAuditLogs { verifyAuditLogsCheckPattern(true, 3, webOpenPattern); } + /** make sure that "\r\n" isn't made into a newline in audit log */ + @Test + public void testAuditCharacterEscape() throws Exception { + final Path file = new Path("foo" + "\r\n" + "bar"); + setupAuditLogs(); + fs.create(file); + verifyAuditLogsRepeat(true, 1); + } + /** Sets up log4j logger for auditlogs */ private void setupAuditLogs() throws IOException { Logger logger = ((Log4JLogger) FSNamesystem.auditLog).getLogger(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
