summaryrefslogtreecommitdiffstats
path: root/liblog/log_read_kern.c
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2015-01-26 10:46:44 -0800
committerMark Salyzyn <salyzyn@google.com>2015-02-25 17:44:18 +0000
commit2d3f38a6b8e724749b59d201a01b35fa0951141e (patch)
tree99855d3dd759307ced68e36ad7206747e55bf51d /liblog/log_read_kern.c
parent72bf2a710089b5fff42059d5946fe7bdd6b12480 (diff)
downloadsystem_core-2d3f38a6b8e724749b59d201a01b35fa0951141e.zip
system_core-2d3f38a6b8e724749b59d201a01b35fa0951141e.tar.gz
system_core-2d3f38a6b8e724749b59d201a01b35fa0951141e.tar.bz2
liblog: introduce ANDROID_LOG_* flags
Move away from using POSIX open(2) flags and introduce ANDROID_LOG_* flags to replace them. Add security by preventing random mode flags from getting into underlying POSIX calls. ANDROID_LOG_* flags overlap POSIX O_* flag definitions. Change-Id: Ib32bb64c287e8bf150be62242e1ba46bb37839fc
Diffstat (limited to 'liblog/log_read_kern.c')
-rw-r--r--liblog/log_read_kern.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/liblog/log_read_kern.c b/liblog/log_read_kern.c
index 41b8a51..bdc7b18 100644
--- a/liblog/log_read_kern.c
+++ b/liblog/log_read_kern.c
@@ -75,10 +75,10 @@ const char *android_log_id_to_name(log_id_t log_id)
static int accessmode(int mode)
{
- if ((mode & O_ACCMODE) == O_WRONLY) {
+ if ((mode & ANDROID_LOG_ACCMODE) == ANDROID_LOG_WRONLY) {
return W_OK;
}
- if ((mode & O_ACCMODE) == O_RDWR) {
+ if ((mode & ANDROID_LOG_ACCMODE) == ANDROID_LOG_RDWR) {
return R_OK | W_OK;
}
return R_OK;
@@ -117,7 +117,7 @@ log_id_t android_name_to_log_id(const char *logName)
++b;
}
- ret = check_allocate_accessible(&n, b, O_RDONLY);
+ ret = check_allocate_accessible(&n, b, ANDROID_LOG_RDONLY);
free(n);
if (ret) {
return ret;
@@ -201,8 +201,8 @@ static int logger_ioctl(struct logger *logger, int cmd, int mode)
return -EFAULT;
}
- if (((mode & O_ACCMODE) == O_RDWR)
- || (((mode ^ logger->top->mode) & O_ACCMODE) == 0)) {
+ if (((mode & ANDROID_LOG_ACCMODE) == ANDROID_LOG_RDWR)
+ || (((mode ^ logger->top->mode) & ANDROID_LOG_ACCMODE) == 0)) {
return ioctl(logger->fd, cmd);
}
@@ -227,13 +227,13 @@ static int logger_ioctl(struct logger *logger, int cmd, int mode)
int android_logger_clear(struct logger *logger)
{
- return logger_ioctl(logger, LOGGER_FLUSH_LOG, O_WRONLY);
+ return logger_ioctl(logger, LOGGER_FLUSH_LOG, ANDROID_LOG_WRONLY);
}
/* returns the total size of the log's ring buffer */
long android_logger_get_log_size(struct logger *logger)
{
- return logger_ioctl(logger, LOGGER_GET_LOG_BUF_SIZE, O_RDWR);
+ return logger_ioctl(logger, LOGGER_GET_LOG_BUF_SIZE, ANDROID_LOG_RDWR);
}
int android_logger_set_log_size(struct logger *logger __unused,
@@ -248,7 +248,7 @@ int android_logger_set_log_size(struct logger *logger __unused,
*/
long android_logger_get_log_readable_size(struct logger *logger)
{
- return logger_ioctl(logger, LOGGER_GET_LOG_LEN, O_RDONLY);
+ return logger_ioctl(logger, LOGGER_GET_LOG_LEN, ANDROID_LOG_RDONLY);
}
/*
@@ -256,7 +256,7 @@ long android_logger_get_log_readable_size(struct logger *logger)
*/
int android_logger_get_log_version(struct logger *logger)
{
- int ret = logger_ioctl(logger, LOGGER_GET_VERSION, O_RDWR);
+ int ret = logger_ioctl(logger, LOGGER_GET_VERSION, ANDROID_LOG_RDWR);
return (ret < 0) ? 1 : ret;
}
@@ -342,7 +342,7 @@ struct logger *android_logger_open(struct logger_list *logger_list,
goto err_name;
}
- logger->fd = open(n, logger_list->mode);
+ logger->fd = open(n, logger_list->mode & (ANDROID_LOG_ACCMODE | ANDROID_LOG_NONBLOCK));
if (logger->fd < 0) {
goto err_name;
}
@@ -565,7 +565,7 @@ int android_logger_list_read(struct logger_list *logger_list,
if (result <= 0) {
if (result) {
error = errno;
- } else if (logger_list->mode & O_NDELAY) {
+ } else if (logger_list->mode & ANDROID_LOG_NONBLOCK) {
error = EAGAIN;
} else {
logger_list->timeout_ms = LOG_TIMEOUT_NEVER;