From e6acda66d3781540403f2ac1ee7fa1606a94225d Mon Sep 17 00:00:00 2001
From: mikael <unknown>
Date: Thu, 14 Feb 2019 15:17:03 -0800
Subject: [PATCH] 8218935: Make jfr strncpy uses GCC 8.x friendly Reviewed-by:
 clanger

---
 .../jfr/recorder/checkpoint/types/jfrThreadGroup.cpp  |  7 +++----
 .../vm/jfr/recorder/repository/jfrChunkState.cpp      |  5 ++---
 .../vm/jfr/recorder/repository/jfrRepository.cpp      | 11 ++++-------
 3 files changed, 9 insertions(+), 14 deletions(-)

diff --git a/src/share/vm/jfr/recorder/checkpoint/types/jfrThreadGroup.cpp b/src/share/vm/jfr/recorder/checkpoint/types/jfrThreadGroup.cpp
index 3e34dd612..d090a1891 100644
--- a/src/share/vm/jfr/recorder/checkpoint/types/jfrThreadGroup.cpp
+++ b/src/share/vm/jfr/recorder/checkpoint/types/jfrThreadGroup.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -238,9 +238,8 @@ void JfrThreadGroup::JfrThreadGroupEntry::set_thread_group_name(const char* tgna
   assert(_thread_group_name == NULL, "invariant");
   if (tgname != NULL) {
     size_t len = strlen(tgname);
-    _thread_group_name = JfrCHeapObj::new_array<char>(len+1);
-    strncpy(_thread_group_name, tgname, len);
-    _thread_group_name[len] = '\0';
+    _thread_group_name = JfrCHeapObj::new_array<char>(len + 1);
+    strncpy(_thread_group_name, tgname, len + 1);
   }
 }
 
diff --git a/src/share/vm/jfr/recorder/repository/jfrChunkState.cpp b/src/share/vm/jfr/recorder/repository/jfrChunkState.cpp
index fd0b8dffb..1ae0888f7 100644
--- a/src/share/vm/jfr/recorder/repository/jfrChunkState.cpp
+++ b/src/share/vm/jfr/recorder/repository/jfrChunkState.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -99,8 +99,7 @@ static char* copy_path(const char* path) {
   assert(path != NULL, "invariant");
   const size_t path_len = strlen(path);
   char* new_path = JfrCHeapObj::new_array<char>(path_len + 1);
-  strncpy(new_path, path, path_len);
-  new_path[path_len] = '\0';
+  strncpy(new_path, path, path_len + 1);
   return new_path;
 }
 
diff --git a/src/share/vm/jfr/recorder/repository/jfrRepository.cpp b/src/share/vm/jfr/recorder/repository/jfrRepository.cpp
index f6c0f0eb9..f225ecf2e 100644
--- a/src/share/vm/jfr/recorder/repository/jfrRepository.cpp
+++ b/src/share/vm/jfr/recorder/repository/jfrRepository.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -209,8 +209,7 @@ const char* const RepositoryIterator::filter(const char* entry) const {
   if (entry_name == NULL) {
     return NULL;
   }
-  strncpy(entry_name, entry, entry_len);
-  entry_name[entry_len] = '\0';
+  strncpy(entry_name, entry, entry_len + 1);
   const char* const fully_qualified_path_entry = fully_qualified(entry_name);
   if (NULL == fully_qualified_path_entry) {
     return NULL;
@@ -332,8 +331,7 @@ static const char* create_emergency_dump_path() {
     if (NULL == emergency_dump_path) {
       return NULL;
     }
-    strncpy(emergency_dump_path, buffer, emergency_filename_length);
-    emergency_dump_path[emergency_filename_length] = '\0';
+    strncpy(emergency_dump_path, buffer, emergency_filename_length + 1);
   }
   return emergency_dump_path;
 }
@@ -407,8 +405,7 @@ bool JfrRepository::set_path(const char* path) {
   if (_path == NULL) {
     return false;
   }
-  strncpy(_path, path, path_len);
-  _path[path_len] = '\0';
+  strncpy(_path, path, path_len + 1);
   return true;
 }
 
-- 
GitLab