Merge "New uid for extractor process"
diff --git a/adb/Android.mk b/adb/Android.mk
index 2538e2e..c507905 100644
--- a/adb/Android.mk
+++ b/adb/Android.mk
@@ -14,6 +14,7 @@
-Wall -Wextra -Werror \
-Wno-unused-parameter \
-Wno-missing-field-initializers \
+ -Wvla \
-DADB_REVISION='"$(adb_version)"' \
# Define windows.h and tchar.h Unicode preprocessor symbols so that
diff --git a/adb/file_sync_client.cpp b/adb/file_sync_client.cpp
index 5339947..1d668bc 100644
--- a/adb/file_sync_client.cpp
+++ b/adb/file_sync_client.cpp
@@ -29,6 +29,7 @@
#include <utime.h>
#include <memory>
+#include <vector>
#include "sysdeps.h"
@@ -101,14 +102,14 @@
// Sending header and payload in a single write makes a noticeable
// difference to "adb sync" performance.
- char buf[sizeof(SyncRequest) + path_length];
- SyncRequest* req = reinterpret_cast<SyncRequest*>(buf);
+ std::vector<char> buf(sizeof(SyncRequest) + path_length);
+ SyncRequest* req = reinterpret_cast<SyncRequest*>(&buf[0]);
req->id = id;
req->path_length = path_length;
char* data = reinterpret_cast<char*>(req + 1);
memcpy(data, path_and_mode, path_length);
- return WriteFdExactly(fd, buf, sizeof(buf));
+ return WriteFdExactly(fd, &buf[0], buf.size());
}
// Sending header, payload, and footer in a single write makes a huge
@@ -123,10 +124,10 @@
return false;
}
- char buf[sizeof(SyncRequest) + path_length +
+ std::vector<char> buf(sizeof(SyncRequest) + path_length +
sizeof(SyncRequest) + data_length +
- sizeof(SyncRequest)];
- char* p = buf;
+ sizeof(SyncRequest));
+ char* p = &buf[0];
SyncRequest* req_send = reinterpret_cast<SyncRequest*>(p);
req_send->id = ID_SEND;
@@ -147,7 +148,7 @@
req_done->path_length = mtime;
p += sizeof(SyncRequest);
- if (!WriteFdExactly(fd, buf, (p-buf))) return false;
+ if (!WriteFdExactly(fd, &buf[0], (p - &buf[0]))) return false;
total_bytes += data_length;
return true;
@@ -172,14 +173,14 @@
}
bool ReportCopyFailure(const char* from, const char* to, const syncmsg& msg) {
- char buffer[msg.status.msglen + 1];
- if (!ReadFdExactly(fd, buffer, msg.status.msglen)) {
+ std::vector<char> buf(msg.status.msglen + 1);
+ if (!ReadFdExactly(fd, &buf[0], msg.status.msglen)) {
fprintf(stderr, "adb: failed to copy '%s' to '%s'; failed to read reason (!): %s\n",
from, to, strerror(errno));
return false;
}
- buffer[msg.status.msglen] = 0;
- fprintf(stderr, "adb: failed to copy '%s' to '%s': %s\n", from, to, buffer);
+ buf[msg.status.msglen] = 0;
+ fprintf(stderr, "adb: failed to copy '%s' to '%s': %s\n", from, to, &buf[0]);
return false;
}
diff --git a/adb/sysdeps_win32.cpp b/adb/sysdeps_win32.cpp
index fd75320..14d1375 100644
--- a/adb/sysdeps_win32.cpp
+++ b/adb/sysdeps_win32.cpp
@@ -567,12 +567,11 @@
// Lookup the string for an unknown error.
char* errmsg = strerror(-1);
- char unknown_error[(errmsg == nullptr ? 0 : strlen(errmsg)) + 1];
- strcpy(unknown_error, errmsg == nullptr ? "" : errmsg);
+ const std::string unknown_error = (errmsg == nullptr) ? "" : errmsg;
// Lookup the string for this error to see if the C Runtime has it.
errmsg = strerror(err);
- if ((errmsg != nullptr) && strcmp(errmsg, unknown_error)) {
+ if (errmsg != nullptr && unknown_error != errmsg) {
// The CRT returned an error message and it is different than the error
// message for an unknown error, so it is probably valid, so use it.
} else {
diff --git a/crash_reporter/Android.mk b/crash_reporter/Android.mk
index 5dd9418..c5ca4e4 100644
--- a/crash_reporter/Android.mk
+++ b/crash_reporter/Android.mk
@@ -43,7 +43,7 @@
LOCAL_C_INCLUDES := $(crash_reporter_includes)
LOCAL_RTTI_FLAG := -frtti
LOCAL_SHARED_LIBRARIES := libchrome \
- libchromeos \
+ libbrillo \
libcutils \
libdbus \
libmetrics \
@@ -65,7 +65,7 @@
LOCAL_INIT_RC := crash_reporter.rc
LOCAL_RTTI_FLAG := -frtti
LOCAL_SHARED_LIBRARIES := libchrome \
- libchromeos \
+ libbrillo \
libcutils \
libdbus \
libmetrics \
@@ -134,7 +134,7 @@
LOCAL_MODULE := crash_reporter_tests
LOCAL_CPP_EXTENSION := $(crash_reporter_cpp_extension)
LOCAL_SHARED_LIBRARIES := libchrome \
- libchromeos \
+ libbrillo \
libcutils \
libdbus \
libpcrecpp
diff --git a/crash_reporter/crash_sender b/crash_reporter/crash_sender
index 5b859a8..95204a4 100755
--- a/crash_reporter/crash_sender
+++ b/crash_reporter/crash_sender
@@ -98,6 +98,10 @@
log -t "${TAG}" "$@"
}
+lwarn() {
+ lecho -psyslog.warn "$@"
+}
+
# Returns true if mock is enabled.
is_mock() {
[ -f "${MOCK_CRASH_SENDING}" ] && return 0
@@ -294,6 +298,11 @@
fi
}
+# Return the log string filtered with only JSON-safe white-listed characters.
+filter_log_string() {
+ echo "$1" | tr -cd '[:alnum:]_.\-:;'
+}
+
send_crash() {
local meta_path="$1"
local report_payload="$(get_key_value "${meta_path}" "payload")"
@@ -434,8 +443,7 @@
ret=$?
if [ ${ret} -ne 0 ]; then
proxy=''
- lecho -psyslog.warn \
- "Listing proxies failed with exit code ${ret}"
+ lwarn "Listing proxies failed with exit code ${ret}"
else
proxy=$(echo "${proxy}" | head -1)
fi
@@ -446,7 +454,7 @@
local curl_stderr="${TMP_DIR}/curl_stderr"
set +e
- curl "${url}" -v ${proxy:+--proxy "$proxy"} \
+ curl "${url}" -f -v ${proxy:+--proxy "$proxy"} \
--capath "${RESTRICTED_CERTIFICATES_PATH}" --ciphers HIGH \
-F "prod=${product}" \
-F "ver=${version}" \
@@ -466,22 +474,17 @@
if [ ${curl_result} -eq 0 ]; then
local id="$(cat "${report_id}")"
- local product_name
local timestamp="$(date +%s)"
- case ${product} in
- Chrome_ChromeOS)
- if is_official_image; then
- product_name="Chrome"
- else
- product_name="Chromium"
- fi
- ;;
- *)
- product_name="Brillo"
- ;;
- esac
- printf '%s,%s,%s\n' \
- "${timestamp}" "${id}" "${product_name}" >> "${CRASH_LOG}"
+ local filter_prod="$(filter_log_string "${product}")"
+ local filter_exec="$(filter_log_string "${exec_name}")"
+ if [ "${filter_prod}" != "${product}" ]; then
+ lwarn "Product name filtered to: ${filter_prod}."
+ fi
+ if [ "${filter_exec}" != "${exec_name}" ]; then
+ lwarn "Exec name filtered to: ${filter_exec}."
+ fi
+ printf "{'time':%s,'id':'%s','product':'%s','exec_name':'%s'}\n" \
+ "${timestamp}" "${id}" "${filter_prod}" "${filter_exec}" >> "${CRASH_LOG}"
lecho "Crash report receipt ID ${id}"
else
lecho "Crash sending failed with exit code ${curl_result}: " \
diff --git a/metricsd/Android.mk b/metricsd/Android.mk
index 8dbaad9..b08c153 100644
--- a/metricsd/Android.mk
+++ b/metricsd/Android.mk
@@ -64,11 +64,11 @@
-fvisibility=default
metrics_includes := external/gtest/include \
$(LOCAL_PATH)/include
-libmetrics_shared_libraries := libchrome libchromeos
+libmetrics_shared_libraries := libchrome libbrillo
metrics_daemon_shared_libraries := $(libmetrics_shared_libraries) \
+ libbrillo-http \
+ libbrillo-dbus \
libchrome-dbus \
- libchromeos-http \
- libchromeos-dbus \
libdbus \
libmetrics \
libprotobuf-cpp-lite \
@@ -120,8 +120,7 @@
# ========================================================
include $(CLEAR_VARS)
LOCAL_MODULE := metrics_daemon
-LOCAL_C_INCLUDES := $(metrics_includes) \
- external/libchromeos
+LOCAL_C_INCLUDES := $(metrics_includes)
LOCAL_CFLAGS := $(metrics_CFLAGS)
LOCAL_CPP_EXTENSION := $(metrics_cpp_extension)
LOCAL_CPPFLAGS := $(metrics_CPPFLAGS)
diff --git a/metricsd/libmetrics.gypi b/metricsd/libmetrics.gypi
index 5b90a55..3c8fc7c 100644
--- a/metricsd/libmetrics.gypi
+++ b/metricsd/libmetrics.gypi
@@ -2,8 +2,8 @@
'target_defaults': {
'variables': {
'deps': [
+ 'libbrillo-<(libbase_ver)',
'libchrome-<(libbase_ver)',
- 'libchromeos-<(libbase_ver)',
]
},
'cflags_cc': [
diff --git a/metricsd/metrics.gyp b/metricsd/metrics.gyp
index 276ec78..c9c02d7 100644
--- a/metricsd/metrics.gyp
+++ b/metricsd/metrics.gyp
@@ -3,8 +3,8 @@
'variables': {
'deps': [
'dbus-1',
+ 'libbrillo-<(libbase_ver)',
'libchrome-<(libbase_ver)',
- 'libchromeos-<(libbase_ver)',
]
},
'cflags_cc': [
diff --git a/metricsd/uploader/sender_http.h b/metricsd/uploader/sender_http.h
index 6249d90..4f1c08f 100644
--- a/metricsd/uploader/sender_http.h
+++ b/metricsd/uploader/sender_http.h
@@ -23,7 +23,7 @@
#include "uploader/sender.h"
-// Sender implemented using http_utils from libchromeos
+// Sender implemented using http_utils from libbrillo
class HttpSender : public Sender {
public:
explicit HttpSender(std::string server_url);