Repository: hadoop
Updated Branches:
  refs/heads/branch-2 b85b5c6b9 -> d0da47ad9


HDFS-11048. Audit Log should escape control characters. Contributed by Eric 
Badger

(cherry picked from commit 8a9388e5f6d622152798aaaa256064919e4fec37)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/d0da47ad
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/d0da47ad
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/d0da47ad

Branch: refs/heads/branch-2
Commit: d0da47ad9f74ad4bab2f99438d78dded75340d46
Parents: b85b5c6
Author: Mingliang Liu <[email protected]>
Authored: Fri Oct 28 10:53:14 2016 -0700
Committer: Mingliang Liu <[email protected]>
Committed: Fri Oct 28 10:57:20 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/d0da47ad/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 ea5cb3a..2d0c98d 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;
@@ -6733,6 +6734,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/d0da47ad/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 47108e4..7faa668 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
@@ -297,6 +297,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]

Reply via email to