summaryrefslogtreecommitdiffstats
path: root/lldb/source/Host/common
diff options
context:
space:
mode:
authorIlia K <ki.stfu@gmail.com>2015-02-27 19:43:08 +0000
committerIlia K <ki.stfu@gmail.com>2015-02-27 19:43:08 +0000
commit686b1fe65ae90f531d5010b3c6b47b479d4b7ccd (patch)
tree5f634785f9fc1e7a88b587c29d43b13bae9afc2c /lldb/source/Host/common
parent79e6c74981f4755ed55b38175d8cd34ec91395b1 (diff)
downloadbcm5719-llvm-686b1fe65ae90f531d5010b3c6b47b479d4b7ccd.tar.gz
bcm5719-llvm-686b1fe65ae90f531d5010b3c6b47b479d4b7ccd.zip
Fix FileSpec::GetPath to return null-terminated strings
Summary: Before this fix the FileSpec::GetPath() returned string which might be without '\0' at the end. It could have happened if the size of buffer for path was less than actual path. Test case: ``` FileSpec test("/path/to/file", false); char buf[]="!!!!!!"; test.GetPath(buf, 3); ``` Before fix: ``` 233 FileSpec test("/path/to/file", false); 234 char buf[]="!!!!!!"; 235 test.GetPath(buf, 3); 236 -> 237 if (core_file) 238 { 239 if (!core_file.Exists()) 240 { (lldb) print buf (char [7]) $0 = "/pa!!!" ``` After fix: ``` 233 FileSpec test("/path/to/file", false); 234 char buf[]="!!!!!!"; 235 test.GetPath(buf, 3); 236 -> 237 if (core_file) 238 { 239 if (!core_file.Exists()) 240 { (lldb) print buf (char [7]) $0 = "/p" ``` Reviewers: zturner, abidh, clayborg Reviewed By: abidh, clayborg Subscribers: tberghammer, vharron, lldb-commits, clayborg, zturner, abidh Differential Revision: http://reviews.llvm.org/D7553 llvm-svn: 230787
Diffstat (limited to 'lldb/source/Host/common')
-rw-r--r--lldb/source/Host/common/FileSpec.cpp6
-rw-r--r--lldb/source/Host/common/SocketAddress.cpp6
2 files changed, 4 insertions, 8 deletions
diff --git a/lldb/source/Host/common/FileSpec.cpp b/lldb/source/Host/common/FileSpec.cpp
index 553764e560d..a968dd93b61 100644
--- a/lldb/source/Host/common/FileSpec.cpp
+++ b/lldb/source/Host/common/FileSpec.cpp
@@ -793,10 +793,8 @@ FileSpec::GetPath(char *path, size_t path_max_len, bool denormalize) const
return 0;
std::string result = GetPath(denormalize);
-
- size_t result_length = std::min(path_max_len-1, result.length());
- ::strncpy(path, result.c_str(), result_length + 1);
- return result_length;
+ ::snprintf(path, path_max_len, "%s", result.c_str());
+ return std::min(path_max_len-1, result.length());
}
std::string
diff --git a/lldb/source/Host/common/SocketAddress.cpp b/lldb/source/Host/common/SocketAddress.cpp
index b6a7a08bb3a..3ab6cfeec4a 100644
--- a/lldb/source/Host/common/SocketAddress.cpp
+++ b/lldb/source/Host/common/SocketAddress.cpp
@@ -48,8 +48,7 @@ const char* inet_ntop(int af, const void * src,
const char* formatted = inet_ntoa(*static_cast<const in_addr*>(src));
if (formatted && strlen(formatted) < size)
{
- strncpy(dst, formatted, size);
- return dst;
+ return ::strcpy(dst, formatted);
}
}
return nullptr;
@@ -64,8 +63,7 @@ const char* inet_ntop(int af, const void * src,
);
if (full_size < static_cast<int>(size))
{
- strncpy(dst,tmp,size);
- return dst;
+ return ::strcpy(dst, tmp);
}
return nullptr;
}
OpenPOWER on IntegriCloud