Index: chrome/common/multi_process_lock_linux.cc |
diff --git a/chrome/common/multi_process_lock_linux.cc b/chrome/common/multi_process_lock_linux.cc |
index 0a83c8976ffc021de80babdeeaf4241a4e1af840..d2d3da331ca6864919e9364495aa200bcd08b413 100644 |
--- a/chrome/common/multi_process_lock_linux.cc |
+++ b/chrome/common/multi_process_lock_linux.cc |
@@ -43,7 +43,15 @@ class MultiProcessLockLinux : public MultiProcessLock { |
== MULTI_PROCESS_LOCK_NAME_MAX_LEN + 2, sun_path_size_changed); |
memset(&address, 0, sizeof(address)); |
- strcpy(&address.sun_path[1], name_.c_str()); |
+ int print_length = snprintf(&address.sun_path[1], |
+ MULTI_PROCESS_LOCK_NAME_MAX_LEN + 1, |
+ "%s", name_.c_str()); |
+ |
+ if (print_length < 0 || |
+ print_length > static_cast<int>(MULTI_PROCESS_LOCK_NAME_MAX_LEN)) { |
+ PLOG(ERROR) << "Couldn't create sun_path - " << name_; |
+ return false; |
+ } |
// Must set the first character of the path to something non-zero |
// before we call SUN_LEN which depends on strcpy working. |
@@ -70,7 +78,9 @@ class MultiProcessLockLinux : public MultiProcessLock { |
PLOG(ERROR) << "Couldn't bind socket - " |
<< &(address.sun_path[1]) |
<< " Length: " << length; |
- HANDLE_EINTR(close(socket_fd)); |
+ if (HANDLE_EINTR(close(socket_fd)) < 0) { |
+ PLOG(ERROR) << "close"; |
+ } |
return false; |
} |
} |
@@ -80,7 +90,9 @@ class MultiProcessLockLinux : public MultiProcessLock { |
DLOG(ERROR) << "Over-unlocked MultiProcessLock - " << name_; |
return; |
} |
- HANDLE_EINTR(close(fd_)); |
+ if (HANDLE_EINTR(close(fd_)) < 0) { |
+ PLOG(ERROR) << "close"; |
+ } |
fd_ = -1; |
} |